toLocaleString似乎没有按预期工作

时间:2017-06-26 16:29:23

标签: javascript google-chrome

我正在尝试以用户熟悉的格式打印日期/时间。我有:

options = { day: "numeric", year: "numeric", month: "short", time: "short", hour12: false, hour: "2-digit", minute: "2-digit" };

明确指定locale后,似乎会出现options

date.toLocaleString("en-US", options);

将产生:

  

2017年6月26日,13:05

如果我遗漏了语言环境参数:

date.toLocaleString(options);

将产生:

  

6/26/2017,1:05:00 PM

如果我将其删除,将使用的语言环境是什么?据我所知,用于测试的我的PC和浏览器的区域设置是en-US。

如何在没有硬编码的情况下使用浏览器的区域设置显示日期/时间?

var options = { day: "numeric", year: "numeric", month: "short", time: "short", hour12: false, hour: "2-digit", minute: "2-digit" };

var D = new Date();
d = D.toLocaleString("en-US", options);
e = D.toLocaleString(options);
f = D.toLocaleString("en-US");

$("#d").text(d);
$("#e").text(e);
$("#f").text(f);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id='d'></div>
<div id='e'></div>
<div id='f'></div>

1 个答案:

答案 0 :(得分:4)

opts = { day: "numeric", year: "numeric", month: "short", time: "short", hour12: false, hour: "2-digit", minute: "2-digit" };
date.toLocaleString(undefined, opts);

取自:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

基本上,它仍然需要为第一个参数传递一些东西。否则它会忽略您的选项对象。