我正在做一个项目,突然发现一个问题。问题是,服务器正在发送 GMT 的 Unix 时间戳,但由于夏令时,日期被填充为 GMT。它可以从服务器端实现,但有一种非常简单的方法可以将其转换为本地时区(在我的情况下为 GMT 到 BST)
创建三个变量
- 获取完美本地时间
- 你的Unix时间戳
- 你的格式
以下是逻辑,您可以使用
var GMTtime = moment(yourUnixTimestamp*1000).format('YYYY-MM-DD HH:mm:ss'); // It should be YYYY-MM-DD format
var convertToUtc = moment.utc(GMTtime).format('YYYY-MM-DD HH:mm:ss');
var localTimeToDate = moment.utc(convertToUtc).toDate();
var isDSTDateTime = moment(GMTtime, 'YYYY-MM-DD');
var month = isDSTTime.format('M');
var day = isDSTTime.format('D');
var year = isDSTTime.format('YYYY');
if(moment([year, month, day]).isDST()){
getPerfectLocalTime = moment(localTimeToDate).format(yourFormat);
}else {
getPerfectLocalTime = moment(yourUnixTimestamp*1000).format(yourFormat);
}
希望它可以帮助编程世界中的任何人:)