日期格式转换javascript
我试图用javascript将“2013年7月24日”转换为“DD-MM-YYYY”,但我一直在收到并且错误。
我正在使用new Date('July 24 2013').format("DD-MM-YYYY");
我错过了什么?
Date
对象没有.format()
方法。 如果您主动使用日期和时间,我建议您使用MomentJS库。 它具有许多有用的function来处理时间和日期。
例如: moment('July 24 2013', 'MMMM D YYYY').format('MMMM D YYYY, h:mm:ss a');
我强烈建议使用momentjs !
moment('July 24 2013').format("DD-MM-YYYY"); // => "24-07-2013"
就那么简单!
JavaScript中没有Data.prototype.format函数。
您最好查看本地化日期的开源选项。 我成功了
- 全球化: https : //github.com/jquery/globalize#dates
还有:
- 片刻: http : //momentjs.com/timezone/
- DateJS: https : //code.google.com/p/datejs/
为了简化一点……问题是因为浏览器用来存储日期的格式并不总是相同的(并且不允许传递给Date构造函数的格式)。 标准允许这样做,所需要的是浏览器可以解析自己生成的格式(参见§15.9.4.2 )。
通常直接使用日期格式不是一个好主意,不仅因为浏览器特定的实现而且因为全球化(对于具有虚拟全球受众的Web应用程序尤其如此)。
您确定每个浏览器将读取的唯一格式是YYYY-MM-DDTHH:mm:ss.sssZ
(参见§15.9.1.15 )所以在您的情况下,您应该将自定义解析/格式更改为。
看看这个和这个post在SO上的其他细节(或这个关于日期的小教程 )。
我建议,如果你在浏览器和语言环境中使用日期,就是使用一个好的库来抽象所有这些细节。 我发现这个非常强大且易于使用(它取代了标准的 Date
函数,因此您甚至可能不需要更改一行代码)。
Bellow是基于Java日期格式的简单,可移植,纯JS实现:
function date_format( d, p ) { var pad = function (n, l) { for (n = String(n), l -= n.length; --l >= 0; n = '0'+n); return n; }; var tz = function (n, s) { return ((n<0)?'+':'-')+pad(Math.abs(n/60),2)+s+pad(Math.abs(n%60),2); }; return p.replace(/([DdFHhKkMmSsyZ])\1*|'[^']*'|"[^"]*"/g, function (m) { l = m.length; switch (m.charAt(0)) { case 'D': return pad(d.getDayOfYear(), l); case 'd': return pad(d.getDate(), l); case 'F': return pad(d.getDayOfWeek(i18n), l); case 'H': return pad(d.getHours(), l); case 'h': return pad(d.getHours() % 12 || 12, l); case 'K': return pad(d.getHours() % 12, l); case 'k': return pad(d.getHours() || 24, l); case 'M': return pad(d.getMonth() + 1, l ); case 'm': return pad(d.getMinutes(), l); case 'S': return pad(d.getMilliseconds(), l); case 's': return pad(d.getSeconds(), l); case 'y': return (l == 2) ? String(d.getFullYear()).substr(2) : pad(d.getFullYear(), l); case 'Z': return tz(d.getTimezoneOffset(), ' '); case "'": case '"': return m.substr(1, l - 2); default: throw new Error('Illegal pattern'); } }); }; console.log( date_format( new Date(), 'yyyy.mm.dd kk:MM:ss Z' ) ); console.log( date_format( new Date(), 'MM/dd/yyyy HH:mm:ss' ) );
以上代码基于http://llamalab.com/js/date/Date.js(LGPL )