本文介绍如何在 JavaScript 中获取当前系统时间的年月日时分秒,并提供一种通用的时间格式化扩展方法。通过 Date 对象的各种 getter 方法提取时间分量,结合正则替换实现自定义格式输出,适用于前端开发中的日期显示需求。
获取当前时间对象
首先,需要实例化一个 Date 对象以获取当前系统时间。
var myDate = new Date();
接着,利用 Date 对象提供的多种方法提取具体的时间分量,包括年份、月份、日期、星期、小时、分钟、秒及毫秒等详细信息。
提取时间分量
myDate.getYear(); // 获取当前年份(2位)
myDate.getFullYear(); // 获取完整的年份(4位,1970-????)
myDate.getMonth(); // 获取当前月份(0-11,0代表1月)
myDate.getDate(); // 获取当前日(1-31)
myDate.getDay(); // 获取当前星期X(0-6,0代表星期天)
myDate.getTime(); // 获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); // 获取当前小时数(0-23)
myDate.getMinutes(); // 获取当前分钟数(0-59)
myDate.getSeconds(); // 获取当前秒数(0-59)
myDate.getMilliseconds(); // 获取当前毫秒数(0-999)
myDate.toLocaleDateString(); // 获取当前日期
var mytime=myDate.toLocaleTimeString(); // 获取当前时间
myDate.toLocaleString( ); // 获取日期与时间
为了将 Date 对象转换为特定格式的字符串,可以扩展 Date 原型,定义一个 Format 方法。该方法支持年、月、日、时、分、秒及毫秒的自定义格式输出,允许使用不同数量的占位符来匹配输出精度。
实现时间格式化
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) { // author: meizz
var o = {
"M+": this.getMonth() + 1, // 月份
"d+": this.getDate(), // 日
"h+": this.getHours(), // 小时
"m+": this.getMinutes(), // 分
"s+": this.getSeconds(), // 秒
"q+": Math.floor((this.getMonth() + 3) / 3), // 季度
"S": this.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
在实际调用中,可以直接使用上述扩展的 Format 方法,传入指定的格式字符串即可得到格式化后的时间字符串。
格式化调用示例
var time1 = new Date().Format("yyyy-MM-dd");
var time2 = new Date().Format("yyyy-MM-dd hh:mm:ss");
总结
综上所述,通过实例化 Date 对象并调用其相关方法,可以获取完整的时间信息;通过扩展原型方法,可以实现灵活的时间格式化输出。
希望上述关于 JS 获取当前时间及时间格式化的介绍能对读者有所帮助。如有任何疑问,欢迎留言交流,小编会及时回复。感谢对本站的支持,若觉得本文有用,欢迎转载并注明出处。