@rdkmaster/jigsaw-labs
Version:
Jigsaw, the next generation component set for RDK
179 lines (178 loc) • 5.38 kB
TypeScript
import { Time, Moment, WeekTime } from "./time.types";
/**
* 时间粒度值
*/
export declare enum TimeGr {
second = 0,
minute = 1,
hour = 2,
date = 3,
week = 4,
month = 5,
}
/**
* 周起始日期
*/
export declare enum TimeWeekStart {
sun = 0,
mon = 1,
tue = 2,
wed = 3,
thu = 4,
fri = 5,
sat = 6,
}
/**
* 关于时间宏:
*
* 它通过一些数字,以及语义化的单词作为单位来表示一个时刻,时间宏是一个普通的字符串。
* 例如`"now"`这个宏表示当前时刻,`JigsawTime`将会将其换算为其被初始化的时刻。
*
* 此外,时间宏还支持加减运算。例如`"now-1d"`的意思是昨天的这个时候,相应的,明天则是`"now+1d"`,上个月是`"now-1M"`等。
* 时间宏目前可以支持的时刻是`"now"`,支持的所有单位在这个枚举类型中全部列出了。(注意大小写)
*
* 时间宏的换算是由Jigsaw自动完成的,如果你需要获得一个时间宏的值,请调用`TimeService.getFormatDate()`方法。
*
* `TimeService`提供了许多有用的时间换算、格式化工具,当你有需要对时间进行运算时,可以参考它的api说。
*/
export declare enum TimeUnit {
s = 0,
m = 1,
h = 2,
d = 3,
w = 4,
M = 5,
y = 6,
}
/**
* 常用时间格式,`TimeService.format`可以支持任何格式,我们做这个枚举只是他们太常用了,使用这个枚举+IDE提示,你可以少敲很多次键盘。
*/
export declare enum TimeFormatters {
yyyy_mm_dd_hh_mm_ss = 0,
yyyy_mm_dd_hh_mm = 1,
yyyy_mm_dd_hh = 2,
yyyy_mm_dd = 3,
yyyy_mm = 4,
}
/**
* 提供了日期运算、格式化、转换等一系列常用的方法,当你需要对时间做任何操作时,它都可以帮到你。
*/
export declare class TimeService {
/**
* 将一个时刻转成符合改粒度的值,例如
*
* ```
* TimeService.convertValue("now", TimeGr.date); // -> 2018/3/23 00:00:00
* ```
*
* `"now"`的时分秒被切去。
*
* @param {WeekTime} value 待转换的时刻,支持时间宏,请参考这里`TimeUnit`的说明。
* @param {TimeGr} gr 目标粒度
* @return {string} 符合粒度格式的时刻
*/
static convertValue(value: WeekTime, gr: TimeGr): string;
private static _handleWeekValue(newValue);
private static _timeFormatterConvert(formatter);
private static _timeFormatMap;
/**
* 时间单位枚举值转对应字符串
*
* @param {TimeUnit} unit 时间单位枚举值
* @return {string} 返回对应的字符串
*/
static timeUnitConvert(unit: TimeUnit): string;
private static _timeUnitMap;
private static _initMoment();
/**
* 仅仅是为了初始化moment对象
* @type {any}
*/
private static init;
/**
* 判断给定的时刻值是否是时间宏字符串
*
* @param {Time} time 给定的时刻值
* @returns {boolean} 如果给定的值非字符串,则必然返回false。
*/
static isMacro(time: Time): boolean;
/**
* 特殊时间宏的转换
* @param timeMacro
* @returns {any}
*/
private static _convertBasicMacro(timeMacro);
/**
* 时间加减法
*
* @param {Time} date 时间
* @param {string|number} num 数量,为负数即为减法
* @param {TimeUnit} unit 单位
*/
static addDate(date: Time, num: string | number, unit: TimeUnit): Moment;
/**
* 根据粒度获取格式化字符串
*
* @param {TimeGr} gr
* @returns {string}
*/
static getFormatter(gr: TimeGr): string;
/**
* 时间格式化
*
* @param {Time} date
* @param {string | TimeFormatters} formatter
*/
static format(date: Time, formatter: string | TimeFormatters): string;
/**
* 根据粒度格式化时间
*
* @param {Time} date
* @param {TimeGr} gr
*/
static formatWithGr(date: Time, gr: TimeGr): string;
/**
* 设置默认周开始,设置之后会影响之后的所有计算结果
*
* @param {TimeWeekStart} weekStart
*/
static setWeekStart(weekStart?: TimeWeekStart): void;
/**
* 获取给定时间在当年的周数
*
* @param {Time} date
* @return {number}
*/
static getWeekOfYear(date: Time): number;
/**
* 获取给定时间的年数值
*
* @param {Time} date
* @return {number}
*/
static getYear(date: Time): number;
/**
* 获取给定时间的月数值
*
* @param {Time} date
* @return {number}
*/
static getMonth(date: Time): number;
/**
* 获取给定时间的天数值
*
* @param {Time} date
* @return {number}
*/
static getDay(date: Time): number;
static getDateFromYearAndWeek(year: number, week: number): Date;
static getDate(str: Time, gr: TimeGr): Moment;
/**
* 根据字符串获取真实时间
*
* @param {Time} time
* @param {TimeGr} gr
* @returns {Time}
*/
static getFormatDate(time: Time, gr?: TimeGr): Time;
}