我想在 JavaScript 中获取当前 UTC 日期,但以本地日期格式显示它(例如Date.toLocaleDateString()
does).
我首先尝试获取当前 UTC 日期Date.toUTCString()
但这实际上并没有以本地格式打印出来。
然后我尝试使用选项配置toLocaleDateString()
,但这只是打印本地日期,而不是本地格式的 UTC 日期。
例如新的Date().toLocaleDateString(options = {timeZone: "UTC"})
然后我尝试使用格式化Intl.DateTimeFormat()
,但这给出的结果与Date.toLocaleDateString()
does.
如果有办法获取区域设置格式,那么我很乐意使用该格式来格式化 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"})
将打印出“3/29/2019”。
我还想使用本地化字符串设置显示日期,例如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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)