JavaScript 日期格式化方法详解与实现

作者:阿沐时间:2026-10-28 15:44:27浏览:570

本文系统介绍JavaScript中日期格式化的多种实现方式。首先解析Date对象的内置获取方法,随后展示通过扩展Date.prototype实现自定义格式字符串替换的通用方案,最后介绍基于JsJava库的SimpleDateFormat用法。内容涵盖具体代码实现、参数说明及格式占位符对照表,帮助开发者灵活处理前端时间显示需求。

JavaScript 日期格式化方法详解与实现

本文将直接展示几种常见的日期格式化实现方式。

Date 对象内置方法一览

具体代码示例如下:

var myDate = new 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.prototype.format 实现

作为Web项目中常用的JavaScript工具,它可以协助解决客户端编程中的诸多问题。以下提供一种通过JavaScript实现时间格式化的具体方法。

相关代码如下:

Date.prototype.format =function(format)
    {
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
        }
if(/(y+)/.test(format)) format=format.replace(RegExp.$1,
(this.getFullYear()+"").substr(4- RegExp.$1.length));
for(var k in o)if(new RegExp("("+ k +")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length==1? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
    }

上述代码需先进行声明定义,之后方可调用。使用示例如下:

var d =new Date().format('yyyy-MM-dd'); 另一种方法:

基于 JsJava 库的格式化方案

在JavaScript中,处理日期的核心对象为Date。若需将日期对象按特定格式输出为字符串,可参考以下方案。Date对象内置了四个用于字符串输出的方法:1)toGMTString,按GMT格式显示日期;2)toLocaleString,按本地操作系统格式显示;3)toLocaleDateString,按本地格式仅显示日期部分;4)toLocaleTimeString,按本地格式仅显示时间部分。由于内置方法无法自定义格式,若需特殊格式输出,可借助JsJava库。该库提供了专用的日期格式化类,需下载JsJava-2.0.zip,引入src/jsjava/text/DateFormat.js或直接引入jslib/jsjava-2.0.js。样例代码如下:

代码示例如下:

var df=new SimpleDateFormat();//jsJava1.0需要使用DateFormat对象,注意区分
df.applyPattern("yyyy-MM-dd HH:mm:ss");
var date=new Date(2007,3,30,10,59,51);
var str=df.format(date);
document.write(str);//显示结果为:2007-04-30 10:59:51

通过上述示例可知,关键在于指定pattern参数。pattern中的yyyy、MM等均为占位符,具有特定含义,类似于Java日期格式化中的规则。例如y表示年,yyyy表示四位数字年份(如1982)。下表列举了pattern支持的部分特殊字符及其含义(参考Java官方文档并做适当修改):

相关定义如下:

G Era designator [url=]Text[/url] AD
y Year [url=]Year[/url] 1996; 96
M Month in year [url=]Month[/url] July; Jul; 07
w Week in year [url=]Number[/url] 27
W Week in month [url=]Number[/url] 2
D Day in year [url=]Number[/url] 189
d Day in month [url=]Number[/url] 10
F Day of week in month [url=]Number[/url] 2
E Day in week [url=]Text[/url] Tuesday; Tue
a Am/pm marker [url=]Text[/url] PM
H Hour in day (0-23) [url=]Number[/url] 0
k Hour in day (1-24) [url=]Number[/url] 24
K Hour in am/pm (0-11) [url=]Number[/url] 0
h Hour in am/pm (1-12) [url=]Number[/url] 12
m Minute in hour [url=]Number[/url] 30
s Second in minute [url=]Number[/url] 55
S Millisecond [url=]Number[/url] 978

作者最新文章