首页 > 解决方案 > 如何根据行程预订时间查找 24 小时差异

问题描述

从 API 中,我得到了旅行预订时区(PST)、日期时间(2020-07-10 16:00:00)。现在我想检查与用户浏览器当前时间的 24 小时时差并显示取消按钮,否则我们需要隐藏按钮。我在下面所做的是我正在通过从 API 获取的旅行预订时间2020-08-10 16:58:00和预订时区PST,然后我正在使用该方法找到currentDate并获取差异。diff但我没有得到当前值。有什么帮助吗?

const departureDateWithTimeZone = moment.tz('2020-08-10 16:58:00', 'PST');
const currentDate = moment().format();
const diff = departureDateWithTimeZone.diff(currentDate, 'h');

标签: momentjsmoment-timezone

解决方案


文档声明最后一个参数moment.tz应该是时区标识符

使用America/Los_Angeles(或任何其他正确的 tz 标识符)而不是PST

const departureDateWithTimeZone = moment.tz('2020-08-10 16:58:00', 'America/Los_Angeles'); 
const currentDate = moment(); 
const diff = departureDateWithTimeZone.diff(currentDate, 'h');
  
console.log(`Current date: ${currentDate.format('YYYY-MM-DD HH:mm:ss Z')}`);
console.log(`Departure date: ${departureDateWithTimeZone.format('YYYY-MM-DD HH:mm:ss Z')}`);
console.log(`Diff in hours: ${diff}`); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data.min.js"></script>


推荐阅读