【问题标题】:Local system date format本地系统日期格式
【发布时间】:2018-12-01 11:28:03
【问题描述】:

我有一个 HTML 格式的只读字段。在这里,我需要以与用户的语言环境系统相关的格式显示日期(来自后端系统)。这是一个可编辑的字段,用户可以根据系统设置输入日期。

我想知道如何获取系统日期格式(即它可以是 dd.MM.yyyy、MM/dd/YYYY、dd-MM-YYYY、YYYY-MM-dd 根据用户的系统设置PC) 使用 Javascript 或 jQuery。

问候,

SAP 学习者

【问题讨论】:

标签: javascript jquery date


【解决方案1】:

您可以使用 JS 中的内置函数获取系统日期

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; 
var yyyy = today.getFullYear();

if(dd<10) {
    dd = '0'+dd
} 

if(mm<10) {
    mm = '0'+mm
} 

today = mm + '/' + dd + '/' + yyyy;
document.write(today)

document.write("<br>")
// OR other solution

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));

【讨论】:

    【解决方案2】:

    我假设 HTML 字段是 HTML5 日期类型字段。根据浏览器和语言区域设置,可以看到不同的前端用户格式,但底层值始终由格式yyyy-mm-dd 定义。此外,当发布包含日期字段的表单时,服务器端也会收到此格式。

    Javascript 上的日期基于对象Date。但这除了日历日期外,还包括时间、微秒和时区。要在用户区域设置上格式化当前用户系统日期浏览器,可以使用。

    var dateLocale= new Date().toLocaleString();
    

    如果用户输入的日期,使用日期输入字段,仅获取值将给出格式“yyyy-mm-dd”。但是,有一种方法可以使用方法valueAsDate 检索内容。这将返回一个Date 对象。但是,此 Date 对象的时间为 GMT 时区的 12:00 AM。当您尝试检索区域设置日期部分时,内容可能是错误的,因为它位于错误的时区。要解决此问题,请将时区偏移分钟添加到 Date 对象,以获得正确的语言环境时间和日期。

    var dv=document.getElementById('date_field').valueAsDate;
    dv.setMinutes(dv.getTimezoneOffset());
    var datelocale=dv.toLocaleDateString;
    

    现在您可以使用datelocale 变量做任何您想做的事情,但不要尝试将其放回日期输入字段,因为它可能不兼容。您可以将其放入文本输入类型或隐藏类型。

    【讨论】:

    • 谢谢.. 但是,我的问题仍未得到解答。| new Date().toISOString().split('T')[0];给了我 yyyy-MM-dd 格式的日期。但是,我如何使用它来确定用户系统的 dateformat 设置。我必须在日期字段和文本字段中将来自后端的日期格式化为区域设置格式。
    • 我编辑了我的答案,以明确在您使用输入日期类型时语言区域设置是独立的。唯一棘手的是当您同时使用时间时,因为您需要考虑时区。但这是一种不同的表单输入,并非在所有浏览器上都普遍可用。
    • 另一方面,如果您想要查看用户计算机日期格式的配置方式,您可以使用var a=new Date().toLocaleString().split(',')[0];。但这种格式可能与 HTML5 日期输入控制器不兼容。
    • 感谢您的回复。如何 var a=new Date().toLocaleDateString();而不是 var a=new Date().toLocaleString().split(',')[0];?具体来说,我正在寻找以下内容:如果根据用户系统设置的日期格式是 06/25/2018,我希望格式为 MM/dd/yyyy 如果根据用户系统设置的日期格式是 25.06.2018,我希望格式为 dd.MM.yyyy 所以我正在寻找的程序应该给我 MM/dd/yyyy 或 dd.MM.yyyy 或用户在系统中使用的任何格式
    • 你是对的。如果您只对日期部分感兴趣,.toLocalDateString() 可以避免使用所有其他额外代码来排除时间部分。我认为浏览器更可靠地提取正确的语言环境。问题:您想获取用户的“现在”时间,还是想在用户区域设置上格式化外部日期以显示给用户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    相关资源
    最近更新 更多