javascript - 是否有以语言环境字符串格式获取 UTC 日期的功能?
问题描述
我想在 JavaScript 中获取当前的 UTC 日期,但以本地日期格式显示它(就像Date.toLocaleDateString()
那样)。
我首先尝试获取当前的 UTC 日期,Date.toUTCString()
但实际上并没有以本地格式打印出来。
然后我尝试使用中的选项配置toLocaleDateString()
,但这只是打印本地日期而不是本地格式的 UTC 日期。例如新的Date().toLocaleDateString(options = {timeZone: "UTC"})
然后我尝试使用格式化Intl.DateTimeFormat()
,但这只是给出了相同的结果Date.toLocaleDateString()
。
如果有办法获取语言环境格式,那么我很乐意使用该格式来格式化 UTC 日期,但据我所知,没有。
例如,new Date("Sat, 30 Mar 2019 00:27:19 GMT")
在美国,我应该打印出“3/30/2019”,在欧洲,我应该打印出“30/3/2019”,等等,对于每个支持的语言环境。
但是,new Date("Sat, 30 Mar 2019 00:27:19 GMT").toLocaleDateString(options = {timeZone: "UTC"})
将打印出“2019 年 3 月 29 日”。
解决方案
我还想使用本地化字符串设置来显示日期,就像这样toLocaleDateString()
做一样,但使用日期的 UTC 值,而不是本地时区。
例如:
我确实想要本地化的字符串格式,但我也想要 UTC 值而不是本地时区值。此示例中所需的输出将是4/3/2019
,而不是4/2/2019
。
我承认@AndersonHappens 的建议,但我没有使用它。这是我所做的,而不是:
有一个getTimezoneOffset()
函数,它提供本地时区偏移量。
我们可以使用这个函数结果并创建一个新的Date
,应用差异。然后,我们可以toLocaleDateString()
像往常一样直接使用本地化字符串格式获取日期:
作为函数的解决方案可能是这样的:
function toLocaleUTCDateString(date, locales, options) {
const timeDiff = date.getTimezoneOffset() * 60000;
const adjustedDate = new Date(date.valueOf() + timeDiff);
return adjustedDate.toLocaleDateString(locales, options);
}
推荐阅读
- node.js - 如何在 ReactJS 中更改 API 响应的静态 css 文件
- netlogo - 读取两个单独的 CSV 文件
- swift - CoreData 共享实体属性
- javascript - 如何使用 GraphQL 将对象推送到数组中?
- angular - 类型“FormArray”角度 6 上不存在属性“拼接”
- selector - Polymer2 Shadow dom 选择子元素
- javascript - Javascript表单验证返回错误错误
- eclipse - Eclipse EGit 未打开文件比较
- java - 从多模块maven项目的另一个模块下载代码的正确方法是什么?
- javascript - HTML5 - 文件名在媒体播放器中不起作用