Saya menggunakan moment.js untuk memformat waktu tanggal saya, di sini saya memiliki dua nilai tanggal, dan saya ingin mencapai fungsi tertentu ketika satu tanggal lebih besar dari yang lain. Saya membaca sebagian besar dokumen mereka, tetapi tidak menemukan fungsi untuk mencapai ini. Saya tahu itu akan ada di sana.
Ini kode saya:
var date_time = 2013-03-24 + 'T' + 10:15:20:12 + 'Z'
var d = moment(date_time).tz('UTC'); // first date
var now = new Date(),
dnow = moment(now).tz('UTC'),
snow = dnow.minute() % 15,
diffnow = 15 - snow,
tonow = moment(dnow).add('minute', diffnow),
ahead30now = moment(tonow).add('minute', 30);
if (d > ahead30now) {
// allow input time
console.log('UTC TIME DB', d.format());
} else {
}
Edit
var date_time = req.body.date + 'T' + req.body.time + req.body.timezone; // 2014-03-24T01:15:000
var utc_input_time = moment(date_time).utc(); // 2014-03-24T01:15:000
console.log('utc converted date_time', moment(date_time).utc().format("YYYY-MM-DDTHH:mm:SSS"));
var isafter = moment(utc_input_time).isAfter(moment('2014-03-24T01:14:000')); // true
if(isafter === true){
console.log('is after true');
} else {
console.log('is after is false');
}
Di sini, saya membandingkan dua tanggal yaitu 2014-03-24T01:15:000 > 2014-03-24T01:14:000
, berharap bahwa yang pertama lebih besar dari yang kedua, tetapi selalu pergi ke kondisi yang lain. Saya tidak tahu kenapa?
sumber
req.body.timezone
adakah yang lebih dari ituZ
? Jika ya, apa?Anda harus dapat membandingkannya secara langsung.
Tampilkan cuplikan kode
sumber
Object.prototype.valueOf
yang ditimpa pada prototipe saat ini untuk mengembalikan timestamp zaman sebagai angka. Jadi ini mirip dengannow.format('x') > date.format('x')
.moment().format("DD/MM/YYYY")
akan mengembalikan string dan kemudian Anda membandingkan menurut abjad dan kemudian 1 Desember akan datang sebelum 2 Januari, karena Anda juga memimpin beberapa hari. Jangan gunakanformat()
jika Anda ingin membandingkan momen keberatan secara langsung.Jsfiddle: http://jsfiddle.net/guhokemk/1/
Metode mengembalikan 1 jika dateTimeA lebih besar dari dateTimeB
Metode mengembalikan 0 jika dateTimeA sama dengan dateTimeB
Metode mengembalikan -1 jika dateTimeA kurang dari dateTimeB
sumber
Adalah penting bahwa datetime Anda dalam benar format ISO ketika menggunakan salah satu pertanyaan momentjs :
isBefore
,isAfter
,isSameOrBefore
,isSameOrAfter
,isBetween
Jadi alih-alih 2014-03-24T01: 14: 000, datetime Anda harus berupa:
jika tidak, Anda mungkin menerima peringatan penghentian berikut dan kondisi akan dianggap salah:
sumber
lewat tanggal ke saat seperti ini ia akan membandingkan dan memberikan hasil. jika Anda tidak ingin format menghapusnya
sumber
Be careful
ini tidak lain adalah membandingkan dua stringhttp://momentjs.com/docs/#/query/is-after/
sumber
untuk perbandingan tanggal-waktu, Anda dapat menggunakan
valueOf
fungsi saat ini yang menyediakan milidetik dari waktu-tanggal, yang terbaik untuk perbandingan:sumber
sumber