我需要格式化JavaScript Date对象。它应该以浏览器正在使用的文化的短格式显示日期和时间,例如:
20/10/2011 10:20 PM
10.20.2011 22:20
我该怎么做(最好用jQuery)?
答案 0 :(得分:4)
Date()对象将为您提供客户端时间(live demo here):
var now=new Date();
alert(now.toLocaleString());
JS和jQuery没有内置格式功能。要以不同方式对其进行格式化,请使用format()
(1.2kb)here之类的函数,然后以下代码将生成类似" 10/10/2012 8:50 pm&#34的格式; :
var now=new Date();
alert( now.format("mm/dd/yy h:MM:ss TT") );
答案 1 :(得分:3)
浏览器使用日期格式的系统设置,或使用自己的(通常以美国为中心)设置。
有一个 Date.prototype.toLocaleDateString()方法,该方法应根据当前系统设置返回日期,但由于浏览器之间的不一致,它依赖于实现并且完全不可靠。
e.g。对我来说,2011年12月13日:
13 December 2001
12/13/2011
Tuesday December 13, 2011
Tuesday, December 13, 2011
Tuesday, 13 December, 2011
因此,只有Safari和IE实际上使用系统设置,似乎其他浏览器的开发人员要么懒得,无动于衷或无知以适应非美国用户。
另一种方法是询问用户他们喜欢哪种格式,或者只使用明确的格式,例如:每个人都会理解2011年12月13日。如果你真的必须只使用数字,那么ISO-8601格式应该可以正常使用:2011-12-13,附加的好处是它很容易排序。
以上述格式打印短日期的一些功能:
// format: 2011/12/5
function shortDate1(obj) {
obj = obj || new Date();
return obj.getFullYear() + '/' + (obj.getMonth() + 1) + '/' + obj.getDate();
}
// format: 2011/12/05
// (padded single digit month and day)
function shortDate2(obj) {
function z(n) {
return (n < 10? '0' : '') + n;
}
obj = obj || new Date();
return obj.getFullYear() + '/' + z(obj.getMonth() + 1) + '/' + z(obj.getDate());
}
// format: 15-Dec-2011
function shortDate3(obj) {
obj = obj || new Date();
function z(n) {
return (n < 10? '0' : '') + n;
}
months = ['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'];
return [z(obj.getDate()),months[obj.getMonth()],obj.getFullYear()].join('-');
}
答案 2 :(得分:2)
了解系统是否在其字符串方法中使用日 - 月或月 - 日,主要用于设置用户输入的顺序,这很方便。 toLocaleString适用于显示已知日期 - 它是国际性的。
Date.dmOrder=(function(){
return Date.parse('2/6/2009')> Date.parse('6/2/2009');
})()
if(Date.dmOrder)// ask for the date first
else // ask for the month first