javascript日期格式(国际设置)

时间:2011-04-21 20:39:49

标签: javascript date

javascript Date.toLocaleDateString()很傻。

我需要的是一个允许我根据喜好简化日期的功能。

如果有一个函数可以读取浏览器日期格式(复数)并使用一个可选参数告诉它使用哪种格式,那将是很好的。

我会解释: “MM / DD / YYYY”非常适合美国和任何愿意忍受他们/我们的人。 “DD / MM / YYYY”是对简短日期格式感兴趣的人最常用的格式。 “Weekday,Month DayOfMonth,Year”仅在您需要超长且依赖于语言的输出时才有用。

我可以用这个:

var s = "/";
if(locale=='us')
  var dateString = Date.getDate()+s+Date.getDay()+s+Date.getFullYear();
else
  var dateString = Date.getDay()+s+Date.getDate()+s+Date.getFullYear();

但我正在寻找一种更优雅的解决方案,它允许我存储日期掩码或格式字符串,以便人们可以根据自己的喜好改变日期显示的方式。 (即使是超长语言依赖的,如果他们足够喜欢它。)

我应该重新设计Date.toString()方法的原型来解释参数吗?还有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

我遇到了一个非常强大的库来处理日期和通用格式: <删除> http://blog.stevenlevithan.com/archives/date-time-format (错误的链接) http://jawe.net/wiki/dev/jsdateformat/home

非常强大且可配置。 (它支持我需要的java风格格式,例如“MEDIUM”日期格式)

时刻似乎很有用并且功能已满(只有中等格式):https://github.com/timrwood/moment

答案 1 :(得分:2)

您可以使用DateTimeFormat Api。

var now = new Date(0)
console.log(new Intl.DateTimeFormat('en-US').format(now)); //12/31/1969
console.log(new Intl.DateTimeFormat('en-GB').format(now)); //31/12/1969

有关Mozilla文档的信息,请参阅此链接: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat

优点:

  • 您不必为项目添加更多库,增加了 捆绑尺寸。
  • 您不必担心浏览器支持,因为几乎每个浏览器都支持它。 https://caniuse.com/#search=intl

PS:如果您不关心捆绑包大小,并且您想要更“用户友好”并且易于使用的内容,请参阅moment.jsluxon,它们都是日期操作的绝佳库。< / p>