在 Javascript 中格式化日期字符串
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8882935/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Formatting a Date string in Javascript
提问by DarkMantis
I have a date string which looks like this:
我有一个看起来像这样的日期字符串:
Thu Feb 09 2012 01:50:00 GMT+0000 (GMT Standard Time)
2012 年 2 月 9 日星期四 01:50:00 GMT+0000(GMT 标准时间)
And I basically need to re-format it to be 2 strings (one for date and one for time).
我基本上需要将它重新格式化为 2 个字符串(一个用于日期,一个用于时间)。
The date format needs to be:
日期格式需要是:
m-d-Y (01-16-2012)
mdY (01-16-2012)
and the time should be
时间应该是
H:i (10:30)
H:i (10:30)
I am fairly new to Javascript so please excuse my ignorance on this.
我对 Javascript 还很陌生,所以请原谅我对此的无知。
Any help would be greatly appreciated!
任何帮助将不胜感激!
Thanks!
谢谢!
回答by Mark McLaren
I would recommend you take a look at Datejs. It is an excellent JavaScript library for parsing dates. (Making use of jQuery for cleanliness)
我建议你看看Datejs。它是一个用于解析日期的优秀 JavaScript 库。(使用 jQuery 保持清洁)
<script type="text/javascript" src="http://www.datejs.com/build/date.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div id="date"></div>
<div id="time"></div>
<script type="text/javascript">
var d = "Thu Feb 09 2012 01:50:00 GMT+0000";
var dout = Date.parse(d);
$("#date").text(dout.toString('M-d-yyyy'));
$("#time").text(dout.toString('HH:mm'));
</script>
回答by Daniel
You might want to take a look at Moment.js
你可能想看看Moment.js
I believe DateJS extends the native JavaScript Date Object and might not be what you want. I am pretty sure MomentJS ( is was inspired by DateJS ) does not extend the native Date Object.
我相信 DateJS 扩展了原生 JavaScript 日期对象,可能不是您想要的。我很确定 MomentJS(受 DateJS 的启发)不会扩展本机 Date 对象。
Check out the docs for Moment.js, this should do the trick for you: http://momentjs.com/docs/#/parsing/string+format
查看 Moment.js 的文档,这应该对你有用:http://momentjs.com/docs/#/parsing/string+format
var foo = moment( stringDateValue , 'MM-DD-YYYY hh:mm');
var foo = moment( stringDateValue , 'MM-DD-YYYY hh:mm');
回答by Rocket Hazmat
I'm not sure about the built-in Date
object, but Datejs
can do this.
Using Datejs' toString
method:
使用 Datejs 的toString
方法:
var now = new Date();
console.log(now.toString('MM-dd-yyyy')); // 01-16-2012
console.log(now.toString('HH:mm')); // 10:30
DEMO: http://jsfiddle.net/b3wgR/3
演示:http: //jsfiddle.net/b3wgR/3
EDIT: If your date is from a string, Datejs can parseit for you.
编辑:如果您的日期来自字符串,Datejs 可以为您解析它。
var str = "Thu Feb 09 2012 01:50:00 GMT+0000";
var date = Date.parse(str);
console.log(date.toString('MM-dd-yyyy')); // 02-09-2012
console.log(date.toString('HH:mm')); // 01:50
回答by Satish Verma
Please use this code, i hope this is helpful to you:
请使用此代码,我希望这对您有所帮助:
var td = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
var month_name = new Array(12);
month_name[0] = "January";
month_name[1] = "February";
month_name[2] = "March";
month_name[3] = "April";
month_name[4] = "May";
month_name[5] = "June";
month_name[6] = "July";
month_name[7] = "August";
month_name[8] = "September";
month_name[9] = "October";
month_name[10] = "November";
month_name[11] = "December";
document.getElementById("TodayDate").innerHTML = weekday[td.getDay()] + ", " + month_name[td.getMonth()] + " " + td.getDate() + ", " + td.getFullYear();
Now output is like : Thursday, May 22, 2014
现在输出就像:2014 年 5 月 22 日,星期四
回答by seaBass
You could use this function
你可以使用这个功能
//example: dateFormater("D, M n, Y h:ft", new Date(), 2)
//results: a formated date two days from now -> Sunday, February 10, 2013 3:07pm
//today is Friday 2/8/13
function dateFormater (mod, nDate, addDay) {
var daysFull = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var daysAbbr = ["Sun.", "Mon.", "Tue.", "Wed.", "Thu.", "Fri.", "Sat."];
var monthsFull = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var monthsAbbr = ["Jan.", "Feb.", "Mar.", "Apr.", "May", "Jun.", "Jul.", "Aug.", "Sep.", "Oct.", "Nov.", "Dec."];
var moddt = "";
var tmp;
//add days to date (use -1 to subtract days
if (typeof addDay !== 'undefined') nDate.setDate(nDate.getDate() + addDay);
var dateMod = mod.split("");
for (el in dateMod) {
switch(dateMod[el]) {
//Delimiters: ,=, /=/ " "=" " :=:
case ",":
moddt += dateMod[el];
break;
case "/":
moddt += dateMod[el];
break;
case " ":
moddt += dateMod[el];
break;
case ":":
moddt += dateMod[el];
break;
//Month: M=January m=Jan. J=01 j=1
case "M":
moddt += monthsFull[nDate.getMonth()];
break;
case "m":
moddt += monthsAbbr[nDate.getMonth()];
break;
case "J":
tmp = nDate.getDate();
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
case "j":
tmp = nDate.getDate();
moddt += tmp.toString();
break;
//Day: D=Monday d=Mon. N=01 n=1
case "D":
moddt += daysFull[nDate.getDay()];
break;
case "d":
moddt += daysAbbr[nDate.getDay()];
break;
case "N":
tmp = nDate.getDate();
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
case "n":
tmp = nDate.getDate();
moddt += tmp.toString();
break;
//Year: Y=2013 y=13
case "Y":
moddt += nDate.getFullYear();
break;
case "y":
tmp = nDate.getFullYear();
tmp = tmp.toString();
moddt += tmp.substr(2, 2);
break;
//Hour: H=08 h=8 Military: Z=14 z=01
case "H":
tmp = nDate.getHours();
if (tmp > 12) tmp -= 12;
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
case "h":
tmp = nDate.getHours();
if (tmp > 12) tmp -= 12;
moddt += tmp.toString();
break;
case "Z":
tmp = nDate.getHours();
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
case "z":
tmp = nDate.getHours();
moddt += tmp.toString();
break;
//Minute: f=08
case "f":
tmp = nDate.getMinutes();
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
//Seconds: s=08
case "s":
tmp = nDate.getSeconds();
tmp = tmp.toString();
if (tmp.length == 1) {
moddt += "0" + tmp;
} else {
moddt += tmp;
}
break;
//AM/PM: T=AM/PM t=am/pm q=a/p
case "T":
if (nDate.getHours() > 11) {
moddt += "PM";
} else {
moddt += "AM";
}
break;
case "t":
if (nDate.getHours() > 11) {
moddt += "pm";
} else {
moddt += "am";
}
break;
case "q":
if (nDate.getHours() > 11) {
moddt += "p";
} else {
moddt += "a";
}
break;
}
}
return moddt;
}
回答by Tony Brix
here is a polyfill for new Date().format("MM-DD-YYYY HH:mm");
这是 new Date().format("MM-DD-YYYY HH:mm") 的 polyfill;
it will return a string with whatever format you want
它会返回一个你想要的任何格式的字符串