0
0
JS 格式化时间戳 转农历日期
MENGX 2021-03-17 01:44 29 0

网上类似的 格式化时间的函数 库不少,但是 平时自己用不到那么多的格式。所以只求简简单单,所以就有了本文。

说到 JS 日期时间 那 JS 里面的对象就是 Date。

JS 时间戳是 毫秒为单位,所以 如果是秒为单位 这个不用教了。

下面是 秒为单位的时间戳 实例化 Date 对象的方法 也是本文的基础:

var time = new Date(1610463213 * 1000);

格式化时间戳

下面要获取日期 也就是格式化出输出部分:

直接调用刚才实例化 Date 对象的 toLocaleStringtoLocaleDateString 与 toLocaleTimeString 方法,即可转换位对应的 格式。

具体效果如下:

var time = new Date(1610463213 * 1000);

time.toLocaleString()
// 输出结果 -> 2021/1/12 下午10:53:33

time.toLocaleDateString('en')
// 输出结果 -> 2021/1/12

time.toLocaleTimeString()
// 输出结果 -> 下午10:53:33

感觉下午俩字别扭? 那你就试试

var time = new Date(1610463213 * 1000);

time.toLocaleString('zh-CN', { hour12: false });

当格式化大量日期时,最好创建一个 Intl.DateTimeFormat 对象,然后使用该对象 format 属性提供的方法。

 

Intl.DateTimeFormat 对象? 这样也引出下面的 获取农历日期 (稍后再讲)

先说 刚才 MDN Web Docs 那句话的实现的方法

格式化时间的正确方法应该是

var time = new Date(1610463213 * 1000);

// 其中对应 的 `dateStyle`, `timeStyle` 值 从长到短分别有 `full`, `long`, `medium`, `short`
var formatDateTime = new Intl.DateTimeFormat('zh-CN', { dateStyle: 'medium', timeStyle: 'medium', hour12: false }).format;

formatDateTime(time)
// formatDateTime(timeA)
// formatDateTime(timeB)
// ....

获取农历日期

这里就简单多

var time = new Date(1610463213 * 1000);

new Intl.DateTimeFormat('zh-u-ca-chinese', { dateStyle: 'full' }).format(time);
// 输出结果 -> 2020庚子年十一月廿九星期二

new Intl.DateTimeFormat('zh-u-ca-chinese', { dateStyle: 'long' }).format(time);
// 输出结果 -> 2020庚子年十一月廿九

new Intl.DateTimeFormat('zh-u-ca-chinese', { dateStyle: 'medium' }).format(time);
// 输出结果 -> 2020年十一月廿九

new Intl.DateTimeFormat('zh-u-ca-chinese', { dateStyle: 'short' }).format(time);
// 输出结果 -> 2020/11/29

更详细的格式 Intl.DateTimeFormat() constructor

以上本文中出现的时间 time 皆为本文撰写时间 2021/1/12 22:53

本文作者:MENGX, 转载请注明来自 MENGX

评论0

登录 / 注册 后在评论区发布内容哦