時間戳與時間相互轉換
時間: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都是毫秒數(shù)
moment(endTime).diff(moment(startTime),'minutes' )
moment(endTime).diff(moment(startTime), 'seconds')
根據(jù)當前時間判別本周一 至 周日 日期, 本月天數(shù)等
周一 至 周日 時間格式化轉化(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'); // 周日日期
獲取當前月的總天數(shù)
moment().daysInMonth()
官網(wǎng)摘錄:
日期格式化
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
下面是兩個常用的鏈接地址,僅供參考
- moment.js地址: https://github.com/moment/moment
- 前端開源項目 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
驚訝的發(fā)現(xiàn),-分割的字符串,被默認解析到了8點,而/分割的字符串,默認解析到了0點。這么說來,我之前有點多次一舉了,直接講-替換成/就可以了
最終,既然-分割的字符串會出問題,那我就講所有的-都換成/就好了,正好也可以借此解決IOS的兼容問題。
動手解決
/**
* 將時間字符串轉換成date對象
* @param dateStr
* 時間字符串
*/
function getDate(dateStr){
/* 若日期是使用-分割的,全部轉換成/
因為只有日期時,js會將-分割的字符串基準時區(qū)設置為GMT,與當前時區(qū)相差8小時 */
dateStr = dateStr.replace(/-/g, '/');
return new Date(dateStr);
}