Gee*_*eek 14 javascript localization
我希望使用本地格式的Date.toLocaleDateString()的简短表示法.有很多解决方案硬编码yyyy-mm-dd格式,但我希望它依赖于托管页面的系统.到目前为止这是我的功能:
function getDate(dateTimeString)
{
var date = getDateTime(dateTimeString);
var options = { year: "numeric", month: "numeric", day: "numeric" };
return date.toLocaleDateString( date.getTimezoneOffset(), options );
}
Run Code Online (Sandbox Code Playgroud)
但是这样返回它:2015年1月28日星期三,我不想要.有什么建议/想法吗?
PS:它不是一个浏览器,使用它的人很可能没有互联网连接; 所有信息都来自本地数据库所以我不能使用任何这样的东西如何使用javascript地理定位获取访问者的位置(即国家).
Mah*_*hag 63
JavaScript Date toLocaleString()\n此方法使用特定于语言的格式将日期格式化为字符串。
\n例子 :
\n\n\n仅日期:
\n
var n = new Date();\nconsole.log("es-CL: " + n.toLocaleDateString("es-CL"));\n// es-CL: 03-09-2021\nRun Code Online (Sandbox Code Playgroud)\n\n\n日期与时间:
\n
var n = new Date();\nconsole.log("es-CL: " + n.toLocaleString("es-CL"));\n// es-CL: 03-09-2021 17:56:58\nRun Code Online (Sandbox Code Playgroud)\n\n\n名单在这里:
\n
ar-SA: \xd9\xa2\xd9\xa6\xe2\x80\x8f/\xd9\xa1\xe2\x80\x8f/\xd9\xa1\xd9\xa4\xd9\xa4\xd9\xa3 \xd9\x87\xd9\x80 \xd9\x81\xd9\x8a \xd9\xa5:\xd9\xa5\xd9\xa6:\xd9\xa5\xd9\xa8 \xd9\x85\nbn-BD: \xe0\xa7\xa9/\xe0\xa7\xaf/\xe0\xa7\xa8\xe0\xa7\xa6\xe0\xa7\xa8\xe0\xa7\xa7 \xe0\xa7\xab:\xe0\xa7\xab\xe0\xa7\xac:\xe0\xa7\xab\xe0\xa7\xae PM\nbn-IN: \xe0\xa7\xa9/\xe0\xa7\xaf/\xe0\xa7\xa8\xe0\xa7\xa6\xe0\xa7\xa8\xe0\xa7\xa7 \xe0\xa7\xab:\xe0\xa7\xab\xe0\xa7\xac:\xe0\xa7\xab\xe0\xa7\xae PM\ncs-CZ: 3. 9. 2021 17:56:58\nda-DK: 3.9.2021 17.56.58\nde-AT: 3.9.2021, 17:56:58\nde-CH: 3.9.2021, 17:56:58\nde-DE: 3.9.2021, 17:56:58\nel-GR: 3/9/2021, 5:56:58 \xce\xbc.\xce\xbc.\nen-AU: 03/09/2021, 5:56:58 pm\nen-CA: 2021-09-03, 5:56:58 p.m.\nen-GB: 03/09/2021, 17:56:58\nen-IE: 3/9/2021, 17:56:58\nen-IN: 3/9/2021, 5:56:58 pm\nen-NZ: 3/09/2021, 5:56:58 pm\nen-US: 9/3/2021, 5:56:58 PM\nen-ZA: 2021/09/03, 17:56:58\nes-AR: 3/9/2021 17:56:58\nes-CL: 03-09-2021 17:56:58\nes-CO: 3/9/2021, 5:56:58 p. m.\nes-ES: 3/9/2021 17:56:58\nes-MX: 3/9/2021 17:56:58\nes-US: 3/9/2021 5:56:58 p. m.\nfi-FI: 3.9.2021 klo 17.56.58\nfr-BE: 03/09/2021, 17:56:58\nfr-CA: 2021-09-03, 17 h 56 min 58 s\nfr-CH: 03.09.2021, 17:56:58\nfr-FR: 03/09/2021, 17:56:58\nhe-IL: 3.9.2021, 17:56:58\nhi-IN: 3/9/2021, 5:56:58 pm\nhu-HU: 2021. 09. 03. 17:56:58\nid-ID: 3/9/2021 17.56.58\nit-CH: 3/9/2021, 17:56:58\nit-IT: 3/9/2021, 17:56:58\nja-JP: 2021/9/3 17:56:58\nko-KR: 2021. 9. 3. \xec\x98\xa4\xed\x9b\x84 5:56:58\nnl-BE: 3/9/2021 17:56:58\nnl-NL: 3-9-2021 17:56:58\nno-NO: 3.9.2021, 17:56:58\npl-PL: 3.09.2021, 17:56:58\npt-BR: 03/09/2021 17:56:58\npt-PT: 03/09/2021, 17:56:58\nro-RO: 03.09.2021, 17:56:58\nru-RU: 03.09.2021, 17:56:58\nsk-SK: 3. 9. 2021, 17:56:58\nsv-SE: 2021-09-03 17:56:58\nta-IN: 3/9/2021, \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x95\xe0\xae\xb2\xe0\xaf\x8d 5:56:58\nta-LK: 3/9/2021, 17:56:58\nth-TH: 3/9/2564 17:56:58\ntr-TR: 03.09.2021 17:56:58\nzh-CN: 2021/9/3 \xe4\xb8\x8b\xe5\x8d\x885:56:58\nzh-HK: 3/9/2021 \xe4\xb8\x8b\xe5\x8d\x885:56:58\nzh-TW: 2021/9/3 \xe4\xb8\x8b\xe5\x8d\x885:56:58\nRun Code Online (Sandbox Code Playgroud)\n
小智 25
我认为函数toLocaleDateString使用设备上的默认本地数据.
尝试此代码来检查输出:
// America/Los_Angeles for the US
// US English uses month-day-year order
console.log(date.toLocaleDateString('en-US'));
// ? "12/19/2012"
// British English uses day-month-year order
console.log(date.toLocaleDateString('en-GB'));
// ? "20/12/2012"
// Korean uses year-month-day order
console.log(date.toLocaleDateString('ko-KR'));
// ? "2012. 12. 20."
// Arabic in most Arabic speaking countries uses real Arabic digits
console.log(date.toLocaleDateString('ar-EG'));
// ? "???/???/????"
// chinese
console.log(date.toLocaleDateString('zh-Hans-CN'));
// ? "2012/12/20"
Run Code Online (Sandbox Code Playgroud)
Don*_*ato 19
请注意,NodeJS 将只提供设备的语言环境格式,因此当您指定参数 toLocaleDateString 时,例如:
new Date("1983-March-25").toLocaleDateString('fr-CA', { year: 'numeric', month: '2-digit', day: '2-digit' })
'03/25/1983'
Run Code Online (Sandbox Code Playgroud)
请注意,您希望 'fr-CA' 为您提供 YYYY-MM-DD,但事实并非如此。那是因为它只使用美国语言环境,因为我的 Node 实例在美国语言环境中运行。
实际上有一个关于 Node github 帐户的错误报告描述了问题和解决方案:
https://github.com/nodejs/node/issues/8500
提供的解决方案是安装full-icu模块。
dSk*_*ech 10
是的。它非常简单。您可以按如下方式使用日期对象:
var d = new Date();
var mm = d.getMonth() + 1;
var dd = d.getDate();
var yy = d.getFullYear();
Run Code Online (Sandbox Code Playgroud)
然后,您应该拥有以您需要的任何格式形成字符串所需的数字。
var myDateString = yy + '-' + mm + '-' + dd; //(US)
Run Code Online (Sandbox Code Playgroud)
请注意,如果数字是个位数,这将给出类似 2015-1-2 的结果,如果您需要 2015-01-02,则需要进一步转换。
另请注意,这只会给出“客户”日期,即。用户系统上的日期。这应该是他们的当地时间。如果您需要服务器时间,那么您将不得不调用某种 API。
您可以尝试类似:
var date = new Date(Date.UTC(2015, 0, 28, 4, 0, 0));
console.log(date.toLocaleDateString("nl",{year:"2-digit",month:"2-digit", day:"2-digit"}));
Run Code Online (Sandbox Code Playgroud)
至少在Chrome(48.0.2564.116)中为我提供了“ 28-01-15”。
Firefox仅返回“ 01/28/2015”,而phantomJS返回“ 28/01/2015”,而与语言环境无关。
对于日期:.toLocaleDateString('en-US', {day: "numeric"})
完整月份:.toLocaleDateString('en-US', {month: "long"})
简而言之:.toLocaleDateString('en-US', {month: "short"})
完整的一天:.toLocaleDateString('en-US', {day: "long"})
简而言之:.toLocaleDateString('en-US', {day: "short"})