为何JavaScript不内置一个日期格式化方法?

用 moment.js 感觉太重了;
自己手写一个方法,将日期转化成 "YYYY-MM-DD HH:mm:ss" 格式,感觉很麻烦。

-------- 问题有点问题,更新一下描述 ----------

“YYYY-MM-DD HH:mm:ss” 是数据库存储日期常见的格式,“YYYY-MM-DD HH:mm” 是网站、App上很常见的日期格式,大部分时候,后端也是按照这个格式反值的,一些语言是有内置方法将日期处理成这种格式的,例如 Java 的 DateTimeFormatter,php 的 date_format

个人在实际开发项目中,经常需要用JS来将日期处理成上述两种格式,但JS中并没有内置处理这种日期格式的方法。

常见的问题,有理由从语言层面上解决,W3C是出于什么理由,不内置一个方法,解决这个问题?

回答

只能帮到你这里了
http://tool.mkblog.cn/lmbtfy/...

问题挺有意思的。

这里说一下只是你需要一个日期格式化的方法,特定格式("YYYY-MM-DD HH:mm:ss")。但是其实是提供了一些处理的方法的,当然他们只是不符合你的要求。

那么问题来了,你能提供一个满足所有人的库吗?即使你提供了,那么这个库要多大?内置无数种语言?无数种习惯?然后内置一个大多数人都不要的东西?

而且还有一个问题,不知道你用过 new Date() 吗,各个厂商的标准不一致,导致有的格式是解析不了的。真的有个浏览器给你这样一个功能,你敢用吗? 再打个补丁?

image.png

image.png

function FormatTime(t,date){

var date=new Date(date);

var o = {

"M+" : date.getMonth()+1, //月份

"d+" : date.getDate(), //日

"h+" : date.getHours(), //小时

"m+" : date.getMinutes(), //分

"s+" : date.getSeconds(), //秒

"q+" : Math.floor((date.getMonth()+3)/3), //季度

"S" : date.getMilliseconds() //毫秒

};

if(/(y+)/.test(t)){

t=t.replace(RegExp.$1,(date.getFullYear()+"").substr(4-RegExp.$1.length));

};

for(var k in o){

if(new RegExp("("+ k +")").test(t)){

t=t.replace(RegExp.$1,(RegExp.$1.length==1)?(o[k]):(("00"+ o[k]).substr((""+o[k]).length)));

};

}

return t;

};

var time = FormatTime('yyyy-MM-dd hh:mm:ss', '转换的时间')

// console.lof(time)

日期格式化算是一个 specific feature,可以用已有的接口自己实现
编程语言原则上只提供基本操作,而不是专门功能

你觉得 python 的数组负数下标好用,可以自己写个方法去实现啊
你觉得日期格式化方法,可以自己写个方法去实现啊

不可能说你觉得购物车功能好用,js 内置一个购物车类型吧

这个问题要问Brendan(JavaScript 爸爸...)
作为原生态(是指遵循ECMAscript标准的javascript)的语言,它没必须将方方面面都兼顾到,反正它提供底层的方法让你获取时间,至于你要怎么展示,你自己去写代码就行。
现在很多的UI框架,都有封装时间格式的方法,就算你不用框架,自己封装一个简单的插件也是问题不大的。
封装插件参考下:https://www.cnblogs.com/liuxianan/p/js-date-format-parse.html

表示也很不理解,比起ES678910加的一堆语法糖,我觉得时间格式化更常用到

而且这种PHP和一些其他的语言也自带了

语言规范不归 W3C 管,归 TC39 小组的人管😂😂。

其实标准小组正在规划一组新 API 来全面取代 Date 的,js 的 Date 实在太简陋了。新 API 叫 Temporal,目前在 stage 2 ,有兴趣可以看下目前的文档,https://tc39.es/proposal-temp...

新 API 带来好多日期时间相关的功能,单独的 Date Time 还有 Datetime, 不同Calendar表示,等等。

简单看了一下貌似还是没有你要的自定义格式化和 parse 方法,但是默认的 toString 返回的是 ISO 8601 格式的字符串,即YYYY-MM-DDThh:mm:ss。貌似中间带 T 连接才是 ISO 标准格式的。

以上是 为何JavaScript不内置一个日期格式化方法? 的全部内容, 来源链接: utcz.com/a/39488.html

回到顶部