如何解决JavaScript将给定时区中的日期转换为本地日期
在Javascript中,给定一个表示日期的字符串,例如:
var dateFromPrague = "2011-10-10T14:48:00"
知道上面的日期是来自特定本地化的日期,例如欧洲/布拉格,如何将这个日期转换为当地时间?我知道我可以创建一个Date对象,指示像这样的时区偏移量:
var dateFromPrague = new Date("2011-10-10T14:48:00.000+02:00");
然后我可以像这样从上述日期获取本地日期:
var dateFromPragueTolocalDate = dateFromPrague.toString();
但是布拉格偏移量并不总是+02:00,这取决于是否应用夏令时(夏季或冬季)。那么,如何指示正确的时区(例如“欧洲/布拉格”)或以某种方式实现此转换(无法从服务器返回偏移量)?
解决方法
JavaScript本身(或浏览器平台)中目前没有 可以让您执行此操作的任何东西,不,您属于图书馆之地。几年后,您也许可以使用Temporal
,但它仍处于提案过程的初期。提案中有一个polyfill链接,但是您要使用的部分可能是临时命名的LocalDateTime
(不是其最终名称),仍在进行中。
您可以使用的一个库是Moment Timezone。看起来像这样:
var a = moment.tz(dateFromPrague,"Europe/Prague");
实时示例:
var dateFromPrague = "2011-10-10T14:48:00";
var a = moment.tz(dateFromPrague,"Europe/Prague");
console.log(a.toDate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.31/moment-timezone-with-data.min.js"></script>
,
您应该从服务器获取UTC日期,然后可以使用 date.toLocaleDateString()转换为本地日期。这是典型的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。