Merhaba node.js ve kue ile çalışıyorum, bir işi ileri bir zamana ertelemek istiyorum, bunun gibi bir js date nesnesini geçiriyorum benim Saat dilimi UTC + 8, bu nedenle tarih için varsayılan saat dilimi UTC çünküSaat dilimini dikkate alarak bir JS tarih nesnesini oluşturun Node.js/javascript
var today=new Date();
today.setHours(23,00,00);
var email = queue.create('email', {
title: 'Account renewal required'
, to: '[email protected]'
, template: 'renewal-email'
}).delay(today)
.priority('high')
.save();
Bu iyi çalışıyor ama iş 7.00 'de tetikler, olmasıdır.
yüzdenBen moment-timezone node.js için modülü ve böyle yaparak bir şeyi kullanmaya çalıştı.
var today = moment().tz("Asia/Hong_Kong").toDate();
today.setHours(23,00,00);
var email = queue.create('email', {
title: 'Account renewal required'
, to: '[email protected]'
, template: 'renewal-email'
}).delay(today)
.priority('high')
.save();
Ama bunun zaman dilimini görmezden toDate()
kullanmak, bu yüzden burada kaldım zaman buldum, ben 2 gün boyunca çok aranan ve ben bir çözüm bulamadık.
Bunu başarmanın herhangi bir yolu var mı, lütfen bana şimdiden teşekkürler.
Gerçekten istediğiniz şey, saat dilimini kullanarak değil, tarih nesnesi ayarlayarak '23: 00' işlevini ayrıştırmaktır. – Bergi
Sanırım öyle yapmanın bir yolu var mı? –
Muhtemelen, ertesi gün saat 07: 00'de yürütülür. Bu yüzden, saat dilimi ofsetine göre saati ayarlayın: 'today.setMinutes (today.getMinutes() + today.getTimezoneOffset())' 8 saatten (javascript saat dilimleri-UTC için -ve-UTC için) çıkarılacaktır. beklenen süre (ve moment.js kullanmayın). – RobG