【发布时间】:2019-05-23 18:24:50
【问题描述】:
我从 API 获得了这种 "2019-05-05T10:30:00Z" 类型的时间。但我需要像这样转换它"10:30 AM (3:30 PM Your Time)"。我在客户端使用 reactJs。如何将时间转换为用户当前时区?
【问题讨论】:
标签: javascript reactjs time
我从 API 获得了这种 "2019-05-05T10:30:00Z" 类型的时间。但我需要像这样转换它"10:30 AM (3:30 PM Your Time)"。我在客户端使用 reactJs。如何将时间转换为用户当前时区?
【问题讨论】:
标签: javascript reactjs time
const dateToTime = date => date.toLocaleString('en-US', {
hour: 'numeric',
minute: 'numeric'
});
const dateString = "2019-05-05T10:30:00Z";
const userOffset = new Date().getTimezoneOffset()*60*1000;
const localDate = new Date(dateString);
const utcDate = new Date(localDate.getTime() + userOffset);
console.log(`${dateToTime(utcDate)} (${dateToTime(localDate)} Your Time)`);
【讨论】:
您的 API 向服务器发送 DateTime 作为响应,您只需使用以下可以转换为您当地时区的函数。
function convertUTCDateToLocalDate(date) {
var dateLocal = new Date(date);
var newDate = new Date(dateLocal.getTime() - dateLocal.getTimezoneOffset()*60*1000);
return newDate;
}
【讨论】:
看看momentjs。它具有本地化功能,您还可以进行自定义操作。
【讨论】:
我假设您的 API 返回 UTC 时间。从 here 开始,我们可以在标准 JavaScript 可解析日期的末尾使用 UTC。 当 str 是 API 中的字符串时:
var date = new Date(str.substring(0, 10)+" "+str.substring(11, 19)+" UTC")
我确信有更好的解决方案,但这会手动删除您不需要的部分。你可以访问这个Date 对象来提取你需要的东西。
【讨论】: