|
|
@@ -1,4 +1,3 @@
|
|
|
-
|
|
|
/**
|
|
|
* 全局工具类
|
|
|
*/
|
|
|
@@ -112,29 +111,29 @@ export const createMap = (obj, keys) => {
|
|
|
* @param {String} fmt 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等 ss 秒,可自定义组合 默认yyyy-mm-dd
|
|
|
* @returns {string} 返回格式化后的字符串
|
|
|
*/
|
|
|
-export function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
|
|
|
- let date
|
|
|
+export 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
|
|
|
- )
|
|
|
- }
|
|
|
+ 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(), // 年
|
|
|
@@ -146,20 +145,35 @@ export function timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
|
|
|
// 有其他格式化字符需求可以继续添加,必须转化成字符串
|
|
|
}
|
|
|
|
|
|
- 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))
|
|
|
- }
|
|
|
- }
|
|
|
+ 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
|
|
|
+ return formatStr
|
|
|
}
|
|
|
|
|
|
// 日期字符串转秒级时间戳
|
|
|
-export function dateToUnix (dateText){
|
|
|
- let times=new Date(dateText);
|
|
|
- return times.getTime()/1000;
|
|
|
-}
|
|
|
+export function dateToUnix(dateText) {
|
|
|
+ let times = new Date(dateText);
|
|
|
+ return times.getTime() / 1000;
|
|
|
+}
|
|
|
+/**
|
|
|
+ * 获取一天的时间戳
|
|
|
+ * @param {String} type
|
|
|
+ */
|
|
|
+export function timeFrame(type = 'start') {
|
|
|
+ let timestamp = Date.parse(new Date());
|
|
|
+ let date = new Date(timestamp);
|
|
|
+ let Y = date.getUTCFullYear();
|
|
|
+ let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
|
|
|
+ let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
|
|
+
|
|
|
+ let startTime = Date.parse(Y + '/' + M + '/' + D + ' ' + '00:00:00')
|
|
|
+ let endTime = Date.parse(Y + '/' + M + '/' + D + ' ' + '23:59:59')
|
|
|
+ return type == 'start' ? startTime / 1000 : endTime / 1000
|
|
|
+}
|