问题描述
我正在使用 React DatePicker 来获取预订的日期和时间。
似乎一切正常,我得到了正确的日期并将其发送到数据库,但是如果我选择 10:30 作为时间,我到达数据库的时间是 9:30,因为显然正在使用 UTC,但是我在 UTC + 1。
我尝试了以下方法来转换为 UTC + 1,但这两种方法都不起作用。我还能尝试什么?
第一种方法:
const date1 = new Date()
const inc = 1000 * 60 * 60 // an hour
const _date = new Date(date1)
const [startDate,setStartDate] = useState(
new Date( _date.getTime() + inc )
);
第二种方法:
function addHoursToDate(date,hours) {
return new Date(new Date(date).setHours(date.getHours() + hours));
}
const myDate = new Date();
const [startDate,setStartDate] = useState(
addHoursToDate(myDate,1 )
);
解决方法
尝试将数据库中的日期保存为自 Unix Epoch 以来的毫秒数。通过这种方式,您可以在客户端中显示正确的日期,而无需担心时区。
const yourDate = new Date();
const millisSinceUnixEpoch = yourDate.getTime();
...save on db...
...get from db...
const yourDate = new Date(millisSinceUnixEpochFromDb);