|
@@ -1,5 +1,5 @@
|
|
|
import test from './test.js'
|
|
|
-
|
|
|
+import { round } from './digit.js'
|
|
|
/**
|
|
|
* @description 如果value小于min,取min;如果value大于max,取max
|
|
|
* @param {number} min
|
|
@@ -278,29 +278,50 @@ if (!String.prototype.padStart) {
|
|
|
* @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd
|
|
|
* @returns {string} 返回格式化后的字符串
|
|
|
*/
|
|
|
-function timeFormat(dateTime = null, fmt = 'yyyy-mm-dd') {
|
|
|
- // 如果为null,则格式化当前时间
|
|
|
- if (!dateTime) dateTime = Number(new Date())
|
|
|
- // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
|
|
|
- if (dateTime.toString().length == 10) dateTime *= 1000
|
|
|
- const date = new Date(dateTime)
|
|
|
- let ret
|
|
|
- const opt = {
|
|
|
- 'y+': date.getFullYear().toString(), // 年
|
|
|
- 'm+': (date.getMonth() + 1).toString(), // 月
|
|
|
- 'd+': date.getDate().toString(), // 日
|
|
|
- 'h+': date.getHours().toString(), // 时
|
|
|
- 'M+': date.getMinutes().toString(), // 分
|
|
|
- 's+': date.getSeconds().toString() // 秒
|
|
|
+ function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
|
|
|
+ let date
|
|
|
+ // 若传入时间为假值,则取当前时间
|
|
|
+ if (!dateTime) {
|
|
|
+ date = new Date()
|
|
|
+ }
|
|
|
+ // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)
|
|
|
+ else if (/^\d{10}$/.test(dateTime?.toString().trim())) {
|
|
|
+ date = new Date(dateTime * 1000)
|
|
|
+ }
|
|
|
+ // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容
|
|
|
+ else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
|
|
|
+ date = new Date(Number(dateTime))
|
|
|
+ }
|
|
|
+ // 其他都认为符合 RFC 2822 规范
|
|
|
+ else {
|
|
|
+ // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间
|
|
|
+ date = new Date(
|
|
|
+ typeof dateTime === 'string'
|
|
|
+ ? dateTime.replace(/-/g, '/')
|
|
|
+ : dateTime
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ const timeSource = {
|
|
|
+ 'y': date.getFullYear().toString(), // 年
|
|
|
+ 'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
|
|
|
+ 'd': date.getDate().toString().padStart(2, '0'), // 日
|
|
|
+ 'h': date.getHours().toString().padStart(2, '0'), // 时
|
|
|
+ 'M': date.getMinutes().toString().padStart(2, '0'), // 分
|
|
|
+ 's': date.getSeconds().toString().padStart(2, '0') // 秒
|
|
|
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
|
|
}
|
|
|
- for (const k in opt) {
|
|
|
- ret = new RegExp(`(${k})`).exec(fmt)
|
|
|
- if (ret) {
|
|
|
- fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
|
|
|
- }
|
|
|
- }
|
|
|
- return fmt
|
|
|
+
|
|
|
+ for (const key in timeSource) {
|
|
|
+ const [ret] = new RegExp(`${key}+`).exec(formatStr) || []
|
|
|
+ if (ret) {
|
|
|
+ // 年可能只需展示两位
|
|
|
+ const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0
|
|
|
+ formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return formatStr
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -490,12 +511,8 @@ function priceFormat(number, decimals = 0, decimalPoint = '.', thousandsSeparato
|
|
|
const sep = (typeof thousandsSeparator === 'undefined') ? ',' : thousandsSeparator
|
|
|
const dec = (typeof decimalPoint === 'undefined') ? '.' : decimalPoint
|
|
|
let s = ''
|
|
|
- const toFixedFix = function(n, prec) {
|
|
|
- const k = 10 ** prec
|
|
|
- return `${Math.ceil(parseInt(n * k)) / k}`
|
|
|
- }
|
|
|
|
|
|
- s = (prec ? toFixedFix(n, prec) : `${Math.round(n)}`).split('.')
|
|
|
+ s = (prec ? round(n, prec) + '' : `${Math.round(n)}`).split('.')
|
|
|
const re = /(-?\d+)(\d{3})/
|
|
|
while (re.test(s[0])) {
|
|
|
s[0] = s[0].replace(re, `$1${sep}$2`)
|
|
@@ -632,27 +649,27 @@ function pages() {
|
|
|
const pages = getCurrentPages()
|
|
|
return pages
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* @description 修改uView内置属性值
|
|
|
* @param {object} props 修改内置props属性
|
|
|
* @param {object} config 修改内置config属性
|
|
|
- * @param {object} color 修改内置color属性
|
|
|
+ * @param {object} color 修改内置color属性
|
|
|
* @param {object} zIndex 修改内置zIndex属性
|
|
|
*/
|
|
|
function setConfig({
|
|
|
props = {},
|
|
|
- config = {},
|
|
|
- color = {},
|
|
|
+ config = {},
|
|
|
+ color = {},
|
|
|
zIndex = {}
|
|
|
}) {
|
|
|
const {
|
|
|
- deepMerge,
|
|
|
+ deepMerge,
|
|
|
} = uni.$u
|
|
|
uni.$u.config = deepMerge(uni.$u.config, config)
|
|
|
- uni.$u.props = deepMerge(uni.$u.props, props)
|
|
|
- uni.$u.color = deepMerge(uni.$u.color, color)
|
|
|
- uni.$u.zIndex = deepMerge(uni.$u.zIndex, zIndex)
|
|
|
+ uni.$u.props = deepMerge(uni.$u.props, props)
|
|
|
+ uni.$u.color = deepMerge(uni.$u.color, color)
|
|
|
+ uni.$u.zIndex = deepMerge(uni.$u.zIndex, zIndex)
|
|
|
}
|
|
|
|
|
|
export default {
|
|
@@ -685,4 +702,4 @@ export default {
|
|
|
page,
|
|
|
pages,
|
|
|
setConfig
|
|
|
-}
|
|
|
+}
|