moment js:奇怪的UTC转换为时区。Kiritimati岛,UTC+14

请大家帮忙整理一下如何 momentjs 处理一个独特的时区。Kiritimati Island, UTC+14

我想得到清晰的日期,没有小时和分钟, 只有年,月,日在utc。

我这样做了。

const date = new Date(1950, 3, 15);
const formatted = moment(date).utc(true).format();
console.log(formatted);

在任何时区,从UTC-12到UTC+13,我得到:

1950-04-15T00:00:00Z // I'd like to get this for all the timezones

在时区Kiritimati岛,UTC+14,我得到:

1950-04-14T23:55:00Z // unwanted result

我可以在所有时区得到相同的日期吗? 包括基里蒂马提岛?

PS: 我在Windows10的数据& 时间设置中更改时区。

普朗克

解决方案:

这是一个非常奇怪的问题,似乎有一个5分钟的错误在这个时区的 moment.js。与UTC的偏移应该是10h40m,但它是10h45m。

而且这似乎只发生在1979年10月之前的旧日期。

这在Ubuntu 18上也存在,我曾以为这可能是Windows的问题,但看起来不像。

我想应该把它作为一个bug来报告,哦,等等,看起来它已经存在了。https:/github.commomentmomentissues5454。

在任何情况下,都有一个变通的方法,使用 瞬间时区 图书馆。

const date = new Date(1950, 3, 15);
const dateMoment = moment(date).utc(true).format();

const tz = moment.tz.guess(true); // Get moment-timezone to guess user timezone.
const dateMomentTZ = moment.tz(date, tz).utc(true).format();

document.getElementById("mom").innerText = dateMoment;
document.getElementById("momtz").innerText = dateMomentTZ;
document.getElementById("tz").innerText = tz;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script> 

Original - with issue: <b id="mom"></b><br>
Moment.tz - workaround: <b id="momtz"></b><br>
Timezone: <b id="tz"></b>

给TA打赏
共{{data.count}}人
人已打赏
未分类

当运行应用程序时,堆栈视图中的项目将不在堆栈中。

2022-9-9 3:07:17

未分类

基于DropDownList动态创建一个DIV,MVC(MVC3.)

2022-9-9 3:07:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索