为何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()
吗,各个厂商的标准不一致,导致有的格式是解析不了的。真的有个浏览器给你这样一个功能,你敢用吗? 再打个补丁?
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