2016-01-10 158 views
4

我的服務器日期格式爲UTC。我以UTC格式運行我的節點服務器。我想檢查Indian timezone的當前時間是否大於上午8點,即+5.30,並且應該發送郵件。我怎樣才能識別此使用moment.js如何在moment.js中比較不同時區的日期

+1

此功能已拆分爲瞬時時區。你可以在這裏找到文檔http://momentjs.com/timezone/ –

回答

1

您可以使用isAfterMoment Timezone

// Get server date with moment, in the example serverTime = current UTC time 
var serverDate = moment.utc(); 
// Get time in India with Moment Timezone 
var indiaDate = moment.tz("Asia/Kolkata"); 
// Setting time to 8:00 AM (I'm supposing you need to compare with the current day) 
indiaDate.hours(8).minutes(0).seconds(0); 
if(serverDate.isAfter(indiaDate)){ 
    // Server date is greater than 8 AM in India 
    // Add here the code to send a mail 
} 
3

使用moment-timezone

if (moment.tz("08:00","HH:mm","Asia/Kolkata").isBefore()) { 
    // ... 
} 

或者,因爲印度不使用夏令時,你居然不要」 t需要時刻 - 時區。您只需要正確指定固定的偏移量即可。其他使用DST或具有其他基本偏移轉換的區域確實需要瞬時時區。

if (moment.parseZone("08:00+05:30","HH:mmZ").isBefore()) { 
    // ... 
} 

與兩個以上的,記住,isBefore將默認爲當前時間時,有沒有參數。你可以使用moment().isAfter(...)來代替它,但它的方式稍微短一些。

無論您是與UTC還是當地時間進行比較都無所謂,因爲內部時刻無論如何都會跟蹤即時UTC值。