Date#toLocaleDateString Chrome vs Electron

时间:2018-01-05 11:19:33

标签: javascript google-chrome date localization electron

考虑运行相同的javascript应用程序:

  1. 浏览器(主要是Chrome):Intl.DateTimeFormat().format(new Date) // "05/01/2018"
  2. ElectronIntl.DateTimeFormat().format(new Date) // "2018-1-5"
  3. 我们有一个项目列表,每个项目都有一个字段:created date基本上以区域设置格式显示日期:

    
    
    const items = [
      {
        title: 'I am the Title',
        createdDate: new Date(),
        id: 'foobazID'
      }
    ];
    
    const render = item => (`
      <table class="table table-striped" id="${item.id}">
        <tr>
          <th>ID:</th><td>${item.id}</td>
        </tr>
        <tr>
          <th>Title:</th><td>${item.title}</td>
        </tr>
        <tr>
          <th>Created At:</th><td>${item.createdDate.toLocaleDateString()}</td>
        </tr>
      </table>
    `);
    
    document
      .getElementById('view')
      .innerHTML = items.reduce((res, item) => res.concat(render(item)), '')
    ;
    &#13;
    #view {
      margin: 10px;
      padding: 10px;
      border: 1px solid #dee2e6;
    }
    &#13;
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css">
    
    <section id="view">
    </section>
    &#13;
    &#13;
    &#13;

    现在,考虑到在同一台机器上运行的两个应用程序,我们会获得两种不同的日期时间格式:

    电子:

    Electron Version

    Google Chrome:

    enter image description here

    我们可以做些什么来获得相同的格式输出?

1 个答案:

答案 0 :(得分:1)

您可能首先要在Electron和Chrome各自的DevTools控制台中运行以下语句,以发现默认日期时间格式的任何差异:

Intl.DateTimeFormat().resolvedOptions()

基于某些浏览器设置,locale属性可能具有不同的值("en""en-UK""en-US"等)...

然后,明确地将适当的locale作为参数添加到Intl.DateTimeFormat"en",例如:

Intl.DateTimeFormat("en").format(new Date)