用JavaScript格式化日期?
我将endDate 2014-07-27 12:00 am指定给以下代码,它将生成2014年7月28日00:00:00 GMT+0530(印度标准时间),但我想显示endDate,如2014-07-28 12:00 am。我该怎么做用JavaScript格式化日期?,javascript,Javascript,我将endDate 2014-07-27 12:00 am指定给以下代码,它将生成2014年7月28日00:00:00 GMT+0530(印度标准时间),但我想显示endDate,如2014-07-28 12:00 am。我该怎么做 endDate = "2014-07-27 12:00"; alert(endDate); if (endTime == "12:00 AM") { endDate = new Date(endDate); // add a day endDate.se
endDate = "2014-07-27 12:00";
alert(endDate);
if (endTime == "12:00 AM") {
endDate = new Date(endDate);
// add a day
endDate.setDate(endDate.getDate() + 1);
}
字符串:
'2014-07-27 12:00 AM'
不符合ES5中指定的格式,因此浏览器如何处理它完全取决于实现。也许有些人会将其视为UTC,有些人会将其视为本地,还有一些人根本不会解析它
您可以自己解析字符串,可能希望将其视为本地时间:
// Parse a string like 2014-07-27 12:00 AM as a local date and time
function parseISOLike(s) {
s = s.split(/[- :]/);
var ap = s[5].toLowerCase();
var h = s[3]%12 + (ap == 'am'? 0 : 12);
return new Date(s[0], --s[1], s[2], h, s[4]);
}
一旦你有了一个有效的日期对象,你就可以使用日期方法来格式化它
/* Return time in 12hr format for given Date object, or
** current system time if d is falsey
** e.g. 12:00 AM, 01:15 PM
** If secs is true, also show seconds
** e.g. 12:00:00 AM, 01:15:23 PM
*/
function to12hrTime(d, secs) {
d = d || new Date();
var hrs = d.getHours();
// Pad single digit numbers with a leading zero
var pad = function(n){return (n<10?'0':'')+ +n};
return pad(hrs%12 || 12) + ':' + pad(d.getMinutes()) +
(secs? ':' + pad(d.getSeconds()) : '') +
' ' + (hrs<12? 'AM':'PM');
}
// Format date as YYYY-MM-DD hh:mm AP
function formatDate(d) {
function z(n){return (n<10?'0':'') + n;}
return d.getFullYear() + '-' + z(d.getMonth() + 1) + '-' +
z(d.getDate()) + ' ' + to12hrTime(d);
}
console.log(formatDate(parseISOLike('2014-07-27 1:00 pm'))); // 2014-07-27 01:00 PM
/*给定日期对象的12小时格式返回时间,或
**如果d为假,则当前系统时间
**例如,上午12:00,下午1:15
**如果secs为true,则还显示seconds
**例如,上午12:00:00,下午1:15:23
*/
函数到12小时时间(d,秒){
d=d | |新日期();
var-hrs=d.getHours();
//用前导零填充一位数
var pad=function(n){return(nDom不使用日期构造函数来解析字符串,它不可靠且依赖于实现。某些人会将该格式视为UTC格式,其他人会将其视为本地格式,少数人会将其视为NaN
。始终手动解析字符串(有一些库可提供帮助,但只有两三行代码,所以请自己动手)。没有12:00AM这回事。现在是00:00(午夜)。如果出于某种原因,你想将午夜显示为12:00AM,你必须自己来做。@torazaburo是的,但在书写12小时时间时,将午夜显示为上午12点,将中午显示为下午12点是惯例,这可能很烦人(而且12:59am在凌晨1:00AM之前出现)