moment.js的使用

时间戳与时间相互转换

时间:var time = new Date(); // Tue Aug 28 2018 09:16:06 GMT+0800 (中国标准时间)

时间戳:var timestamp = Date.parse(time); // 1535419062000 (Date.parse() 默认不取毫秒,即后三位毫秒为0)

moment转时间:moment(time).valueOf(); // 1535419062126

moment转时间戳:moment(timestamp).format(); // 2018-08-28T09:17:42+08:00

获取当前时间往前的时间

moment().format("YYYY-MM-DD HH:mm:ss"); //当前时间

moment().subtract(7, "days").format("YYYY-MM-DD"); //当前时间的前7天时间

moment().subtract(1, "years").format("YYYY-MM-DD"); //当前时间的前1年时间

moment().subtract(3, "months").format("YYYY-MM-DD"); //当前时间的前3个月时间

moment().subtract(1, "weeks").format("YYYY-MM-DD"); //当前时间的前一个星期时间

获取两个日期/时间的时差

moment(endTime).diff(moment(startTime), 'years')

moment(endTime).diff(moment(startTime), 'months')

moment(endTime).diff(moment(startTime), 'days')    //  开始时间和结束时间的时间差,以“天”为单位;endTime和startTime都是毫秒数

moment(endTime).diff(moment(startTime),'minutes' )

moment(endTime).diff(moment(startTime), 'seconds')

根据当前时间判别本周一 至 周日 日期, 本月天数等

周一 至 周日 时间格式化转化(Y --- 年 M --- 月 D--- 天

    var timeNow = new Date()// 当前时间
    var weekOfday = moment(timeNow).format('E'); // 计算今天是这周第几天
 
    var nowDay = moment(timeNow).format('YYYY-MM-DD') // 当前日期
 
    var Monday = moment(timeNow).subtract(weekOfday - 1, 'days').format('YYYY-MM-DD'); // 周一日期
 
    var Tuesday = moment(timeNow).subtract(weekOfday - 2, 'days').format('YYYY-MM-DD'); // 周二日期
 
    var Wednesday = moment(timeNow).subtract(weekOfday - 3, 'days').format('YYYY-MM-DD'); // 周三日期
 
    var Thursday = moment(timeNow).subtract(weekOfday - 4, 'days').format('YYYY-MM-DD'); // 周四日期
 
    var Friday = moment(timeNow).subtract(weekOfday - 5, 'days').format('YYYY-MM-DD'); // 周五日期
 
    var Saturday = moment(timeNow).subtract(weekOfday - 6, 'days').format('YYYY-MM-DD'); // 周六日期
 
    var Sunday = moment(timeNow).add(7 - weekOfday, 'days').format('YYYY-MM-DD'); // 周日日期  

获取当前月的总天数

moment().daysInMonth() 

官网摘录:

日期格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 五月 27日 2020, 4:47:31 下午
moment().format('dddd');                    // 星期三
moment().format("MMM Do YY");               // 5月 27日 20
moment().format('YYYY [escaped] YYYY');     // 2020 escaped 2020
moment().format();                          // 2020-05-27T16:47:31+08:00

相对时间

moment("20111031", "YYYYMMDD").fromNow(); // 9 年前
moment("20120620", "YYYYMMDD").fromNow(); // 8 年前
moment().startOf('day').fromNow();        // 17 小时前
moment().endOf('day').fromNow();          // 7 小时内
moment().startOf('hour').fromNow();       // 1 小时前

日历时间

moment().subtract(10, 'days').calendar(); // 2020/05/17
moment().subtract(6, 'days').calendar();  // 上星期四16:47
moment().subtract(3, 'days').calendar();  // 上星期日16:47
moment().subtract(1, 'days').calendar();  // 昨天16:47
moment().calendar();                      // 今天16:47
moment().add(1, 'days').calendar();       // 明天16:47
moment().add(3, 'days').calendar();       // 下星期六16:47
moment().add(10, 'days').calendar();      // 2020/06/06

多语言支持

moment.locale();         // zh-cn
moment().format('LT');   // 16:47
moment().format('LTS');  // 16:47:31
moment().format('L');    // 2020/05/27
moment().format('l');    // 2020/5/27
moment().format('LL');   // 2020年5月27日
moment().format('ll');   // 2020年5月27日
moment().format('LLL');  // 2020年5月27日下午4点47分
moment().format('lll');  // 2020年5月27日 16:47
moment().format('LLLL'); // 2020年5月27日星期三下午4点47分
moment().format('llll'); // 2020年5月27日星期三 16:47

下面是两个常用的链接地址,仅供参考

  1. moment.js地址: https://github.com/moment/moment
  2. 前端开源项目 CDN 加速服务,基本上所有的开源js都能在上面找到: https://www.bootcdn.cn/

new Date('2019-12-22').getTime()转化成时分秒是北京时间8点的时间戳,在IOS上不识别中横线分割的时间字符串问题,解决办法:
new Date('2019/12/22 00:00:00').getTime() 是0点的时间戳


image.png

惊讶的发现,-分割的字符串,被默认解析到了8点,而/分割的字符串,默认解析到了0点。这么说来,我之前有点多次一举了,直接讲-替换成/就可以了
最终,既然-分割的字符串会出问题,那我就讲所有的-都换成/就好了,正好也可以借此解决IOS的兼容问题。

动手解决

/**
 * 将时间字符串转换成date对象
 * @param dateStr
 * 时间字符串
 */
function getDate(dateStr){
    /* 若日期是使用-分割的,全部转换成/
            因为只有日期时,js会将-分割的字符串基准时区设置为GMT,与当前时区相差8小时 */
    dateStr = dateStr.replace(/-/g, '/');
    return new Date(dateStr);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容