koishi-utils
Advanced tools
Comparing version 2.0.1 to 2.0.2
export declare function setTimezoneOffset(offset: number): void; | ||
export declare function getTimezoneOffset(): number; | ||
export declare function getDateNumber(date?: number | Date, offset?: number): number; | ||
export declare function fromDateNumber(value: number, offset?: number): Date; | ||
export declare function parseTime(source: string): number; | ||
export declare function parseDate(date: string): Date; | ||
export declare function formatTime(ms: number): string; | ||
export declare function formatTimeInterval(time: Date, interval: number): string; |
@@ -8,2 +8,11 @@ "use strict"; | ||
exports.setTimezoneOffset = setTimezoneOffset; | ||
function getTimezoneOffset() { | ||
return timezoneOffset; | ||
} | ||
exports.getTimezoneOffset = getTimezoneOffset; | ||
const second = 1000; | ||
const minute = second * 60; | ||
const hour = minute * 60; | ||
const day = hour * 24; | ||
const week = day * 7; | ||
function getDateNumber(date = new Date(), offset) { | ||
@@ -14,12 +23,83 @@ if (typeof date === 'number') | ||
offset = timezoneOffset; | ||
return Math.floor((date.valueOf() / 60000 - offset) / 1440); | ||
return Math.floor((date.valueOf() / minute - offset) / 1440); | ||
} | ||
exports.getDateNumber = getDateNumber; | ||
function fromDateNumber(value, offset) { | ||
const date = new Date(value * 86400000); | ||
const date = new Date(value * day); | ||
if (offset === undefined) | ||
offset = timezoneOffset; | ||
return new Date(+date + offset * 60000); | ||
return new Date(+date + offset * minute); | ||
} | ||
exports.fromDateNumber = fromDateNumber; | ||
const timeRegExp = /^(\d+(?:\.\d+)?w(?:eek(?:s)?)?)?(\d+(?:\.\d+)?d(?:ay(?:s)?)?)?(\d+(?:\.\d+)?h(?:our(?:s)?)?)?(\d+(?:\.\d+)?m(?:in(?:ute)?(?:s)?)?)?(\d+(?:\.\d+)?s(?:ec(?:ond)?(?:s)?)?)?$/; | ||
function parseTime(source) { | ||
const capture = timeRegExp.exec(source); | ||
if (!capture) | ||
return 0; | ||
return (parseFloat(capture[1]) * week || 0) | ||
+ (parseFloat(capture[2]) * day || 0) | ||
+ (parseFloat(capture[3]) * hour || 0) | ||
+ (parseFloat(capture[4]) * minute || 0) | ||
+ (parseFloat(capture[5]) * second || 0); | ||
} | ||
exports.parseTime = parseTime; | ||
function parseDate(date) { | ||
let parsed; | ||
if (parsed = parseTime(date)) { | ||
date = Date.now() + parsed; | ||
} | ||
else if (/^\d{1,2}(:\d{1,2}){1,2}$/.test(date)) { | ||
date = `${new Date().toLocaleDateString()}-${date}`; | ||
} | ||
else if (/^\d{1,2}-\d{1,2}-\d{1,2}(:\d{1,2}){1,2}$/.test(date)) { | ||
date = `${new Date().getFullYear()}-${date}`; | ||
} | ||
return date ? new Date(date) : new Date(); | ||
} | ||
exports.parseDate = parseDate; | ||
function formatTime(ms) { | ||
let result; | ||
if (ms >= day - hour / 2) { | ||
ms += hour / 2; | ||
result = Math.floor(ms / day) + ' 天'; | ||
if (ms % day > hour) { | ||
result += ` ${Math.floor(ms % day / hour)} 小时`; | ||
} | ||
} | ||
else if (ms >= hour - minute / 2) { | ||
ms += minute / 2; | ||
result = Math.floor(ms / hour) + ' 小时'; | ||
if (ms % hour > minute) { | ||
result += ` ${Math.floor(ms % hour / minute)} 分钟`; | ||
} | ||
} | ||
else if (ms >= minute - second / 2) { | ||
ms += second / 2; | ||
result = Math.floor(ms / minute) + ' 分钟'; | ||
if (ms % minute > second) { | ||
result += ` ${Math.floor(ms % minute / second)} 秒`; | ||
} | ||
} | ||
else { | ||
result = Math.round(ms / second) + ' 秒'; | ||
} | ||
return result; | ||
} | ||
exports.formatTime = formatTime; | ||
const dayMap = ['日', '一', '二', '三', '四', '五', '六']; | ||
function formatTimeInterval(time, interval) { | ||
if (!interval) { | ||
return time.toLocaleString(); | ||
} | ||
else if (interval === day) { | ||
return `每天 ${time.toLocaleTimeString()}`; | ||
} | ||
else if (interval === week) { | ||
return `每周${dayMap[time.getDay()]} ${time.toLocaleTimeString()}`; | ||
} | ||
else { | ||
return `${time.toLocaleString()} 起每隔 ${formatTime(interval)}`; | ||
} | ||
} | ||
exports.formatTimeInterval = formatTimeInterval; | ||
//# sourceMappingURL=date.js.map |
{ | ||
"name": "koishi-utils", | ||
"description": "Utilities for Koishi", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"main": "dist/index.js", | ||
@@ -6,0 +6,0 @@ "typings": "dist/index.d.ts", |
Sorry, the diff of this file is not supported yet
63808
646