网上类似的 格式化时间的函数 库不少,但是 平时自己用不到那么多的格式。所以只求简简单单,所以就有了本文。
说到 JS 日期时间 那 JS 里面的对象就是 Date。
JS 时间戳是 毫秒为单位,所以 如果是秒为单位 这个不用教了。
下面是 秒为单位的时间戳 实例化 Date
对象的方法 也是本文的基础:
var time = new Date(1610463213 * 1000);
格式化时间戳
下面要获取日期 也就是格式化出输出部分:
直接调用刚才实例化 Date
对象的 toLocaleString
, toLocaleDateString
与 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