最新消息:flex弹性布局更新完毕,阅读地址:http://www.01happy.com/css-flex/

JavaScript中时间格式化新思路toLocaleString()

javascript 39浏览 0评论

在研究Object对象的时候,看到了 toLocaleString() 这个方法可以很简单的实现时间格式化。

时间格式化常规思路

正常思路是通过Date的实例依次获取年月日等,例如一个简单的格式化例子:

Date.prototype.format = function(dateStr) {
	let date = new Date();
	let year = date.getFullYear();
	let month = date.getMonth() + 1;
	let day = date.getDate().toString().padStart(2, "0");
	let hour = date.getHours();
	let minute = date.getMinutes();
	let second = date.getSeconds();
	dateStr = dateStr.replace("年", year)
		.replace("月", month)
		.replace("日", day)
		.replace("小时", hour)
		.replace("分钟", minute)
		.replace("秒", second);
	return dateStr;
};

// 使用上面的方法
console.log(new Date().format("年-月-日")); // 2021-11-04

时间格式化toLocaleString()

toLocaleString() 和 toString() 类似,也是返回对象的字符串,不过会根据本地化的执行环境处理。尤其是对时间对象的支持,可以转成一定的格式。

// 日期,输出当前时间
let date = new Date();
// 这个是格林威治时间格式
console.log(date.toString()); // Thu Nov 04 2021 10:11:35 GMT+0800 (中国标准时间)
// 这个是本地时间格式
console.log(date.toLocaleString()); // 2021/11/4 上午10:18:08

新版本浏览器可以支持 locales 和 options 参数:

let date = new Date();
// 24小时制
let options = {
	year: 'numeric', month: 'numeric', day: 'numeric',
	hour: 'numeric', minute: 'numeric', second: 'numeric',
	hour12: false
};
console.log(date.toLocaleString("zh-CN", options)); // 2021/11/4 10:33:01

获取星期几:

let date = new Date();
let options = {
	weekday: "long"
};
console.log(date.toLocaleString("zh-CN", options)); // 星期四

options 更多的参数可以参考文章尾部提供的链接。

缺陷:

如果要显示 x年x月x日 这样的格式,目前没有找合适的写法,相对来讲 toLocaleString() 功能比较局限一些。

参考资料

Date.prototype.toLocaleString(): https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

转载请注明:快乐编程 » JavaScript中时间格式化新思路toLocaleString()

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址