moment時區處理心得

2021-09-12 12:15:39 字數 1102 閱讀 1586

時區:

時間戳(格林威治時間):

需要注意如果是moment物件格式不能直接操作會修改原始物件的值,遇到最多的地方是時間選擇元件,disableddate傳入函式時需要注意使用clone()

// 已知東八區 '2019-03-12 00:00:00' 時間戳 1552320000 計算東九區的日期

const time_zone = 9;

moment(1552320000 * 1000).subtract(moment().utcoffset() / 60 - time_zone,'hours').format('yyyy-mm-dd hh:mm:ss');

// 2019-03-12 01:00:00 (即時區差x1h)

對應時區的今天不一定是今天00:00:00的時間戳減去時區偏移時間

const time_zone = -11;

const diff = moment().utcoffset() / 60 - time_zone;

moment()

.subtract((24 + (moment().hour() - diff)) % 24, 'hours')

.startof('hour'); // 算出偏移時區

moment的diff是取整演算法,譬如當前時間2019-03-12 01:00:00,那麼diff 2019-03-13 00:00:00 就會得到0,可以第二個引數傳入true,獲取小數字,再用天花板函式

// 和早23個小時diff取天

const today = moment();

const yesterday = moment().subtrct(23,'hours');

today.diff(yesterday,'days') // 0 ???

today.diff(yesterday,'days',true) // 0.9583333333333334 

math.ceil(today.diff(yesterday,'days')) // 1 那如果是小於0 math.floor

moment日期處理庫

moment文件 前天在實現日期選擇器引用moment日期處理庫,覺得有必要將常用的方法記錄下來,特此一記。首發一文 2018 10 27 moment format yyyy mm dd 獲取年 月 日 時 分 秒 var year moment year var month moment mon...

moment日期時間處理

比較全面的講解 前面在專案中遇到乙個關於獲取月初和月底時間的問題 給你乙個毫秒數,需要處理成對應的當月第一天0點和當月最後一天23點59分59秒。比如毫秒數轉過來是2020年5月9日13時45分17秒,需要得到2020年5月1日0點0分0秒,以及2020年5月31日23時59分59秒。如下,val是...

系統時區處理

隨著雲計算時代的到來,應用的使用者可能來自世界各地,如果依然固執的認為時間都是北京時間,就有些固步自封了。時區的問題非常複雜,不時會讓人陷入迷惘之中。下面我為介紹一下我專案中的經驗,希望拋磚引玉,讓我們且行且思考。很久很久以前,一般企業應用都是這樣假定的 客戶端 使用者 應用伺服器,db伺服器都位於...