(健全性检查)对于这个简单的用例,我需要一个时区库吗?

强尼·辛斯666

这将是我第一次使用时区,我听说这对许多开发人员来说是一个主要的痛点,所以我问这个问题是为了确保我没有遗漏任何东西。

我的用例相当“简单”,我想要一个日期时间选择器,用户可以在其中选择本地时区的日期和时间(换句话说,他们在选择器中看到的内容与他们计算机的日期和时间设置为)。

然后我想把这个选择的日期和时间,转换成 UTC 并将其发送到服务器进行保存。

当用户访问某些页面时,我会获取从服务器返回的 UTC 日期/时间并将其转换为用户的本地日期/时间,并以用户友好的方式显示给他们。

我需要像库moment timezone这个或将浏览器的原生日期的方法,如Intl.DateTimeFormatnew Date().getTimezoneOffset()等够了吗?(我只需要支持最新的现代浏览器,所以我是从“它是否满足我的需要”的角度而不是浏览器支持 POV 的角度来问这个问题的)。

看来我只需要两件事:

  1. 一种从 UTC 获取用户时区偏移量的方法(因此我可以将他们的本地时间转换为 UTC 以发送到服务器,并将 UTC 转换回他们的本地时间以在某些页面上显示给他们)
  2. 一种让他们的时区缩写(EST、PDT、CDT 等)显示在 UI 中的方法

我需要这些图书馆吗?如果不是,人们为什么还要使用如此大的库来处理时区呢?

马特·约翰逊-品脱

您提到的功能不需要时区库。

// Get a Date object from your date picker, or construct one
const d1 = new Date("2020-08-02T10:00");

// Convert it to a UTC-based ISO 8601 string for your back-end
const utcString = d1.toISOString();

// Later, you can create a new Date object from the UTC string
const d2 = new Date(utcString);

// And you can display it in local time
const s1 = d2.toString();

// Or you can be a bit more precise with output formatting if you like
const s2 = d2.toLocaleString(undefined, {timeZoneName: 'short'});

console.log("UTC: ", utcString);
console.log("Local Time (default string): ", s1);
console.log("Local Time (intl-based string): ", s2);

请记住,并非所有时区都有缩写,因此这些时区会给出类似“GMT+3”的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章