将Gmail日期格式更改为ISO 8601(即yyyy-mm-dd)


Answers:


9

我没有看到切换到ISO格式的内置方法,但是我为此编写了一个用户脚本。使用Tampermonkey在Chrome中进行了测试。如果已安装Tampermonkey,则在Github中单击Raw按钮应提示安装脚本。

您没有要求更改时间格式,因此我保留了今天的电子邮件:

日期

为了完整起见,请在此处包括脚本。(将通配符添加到URL)

// ==UserScript==
// @name         ISO date format in Gmail
// @namespace    https://github.com/normalhuman/
// @version      16.2.1
// @description  Change Gmail date format to ISO 8601, per http://webapps.stackexchange.com/q/89499
// @author       Normal Human
// @match        http*://mail.google.com/mail/u/0/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==
/* jshint -W097 */
'use strict';

window.setInterval(toISO, 500);

function toISO() {
  var rows = document.getElementsByTagName('tr');
  for (var i = 0; i < rows.length; i++) {
    var rowElements = rows[i].children;
    if (rowElements.length == 8) {
      var timestamp = rowElements[7].firstElementChild;
      if (!/:/.test(timestamp.textContent)) {
        var parts = timestamp.title.split(/, | | at /);
        if (parts.length == 7) {
          var month = 1 + ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'].indexOf(parts[1]);
          timestamp.textContent = parts[3] + '-' + ('0' + month).slice(-2) + '-' + ('0' + parts[2]).slice(-2);
        }
      }
    }
  }
}

请注意,您还需要在“设置” /“常规”菜单中将Gmail语言设置为“英语(美国)”,此版本的脚本才能正常工作(自2017年10月25日起)。它不适用于“英语(英国)”。
wip

10

只能通过语言设置来控制。

在我的语言设置为英语(美国)的情况下,对话列表中的日期格式为Mmm d,去年和更早的日期格式为mm / dd / yyyy

当更改为英语(英国)时,格式分别更改为d Mmmdd / mm / yyyy

Gmail中没有其他英语选项。更改为法语后,它的样式基本上与英国英语相同(但显然是法语,我不会说或不会读)。

Gmail中没有其他用于本地化的设置,也无法选择独立于语言的日期格式。目前看来,您唯一的选择是使用类似他们不断变化的名称所建议的用户脚本


自2018年中期用户界面更改以来,对于仅数字日期,我们现在在英语(美国)中有m / d / yy,在英语(英国)和Français中有dd / mm / yyyy,在Français中有yy-mm-dd(加拿大)。这些确实不是ISO 8601
马修K.

1

原始脚本撰写人:user79865

  1. 用@include替换@match以更好地与Opera + Violentmonkey兼容。
  2. 将间隔增加到完全足够的1秒。
  3. 固定显示时间为12到24小时,但出于外交原因保留了AM / PM :)

下面的工作脚本:

// ==UserScript==
// @name         ISO date format in Gmail
// @namespace    https://github.com/normalhuman/
// @version      16.2.2
// @description  Change Gmail date format to ISO 8601, per /webapps//q/89499
// @author       Normal Human
// @include      http*://mail.google.com/mail/u/0/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==
/* jshint -W097 */
'use strict';

window.setInterval(toISO, 1000);

function toISO() {
  var rows = document.getElementsByTagName('tr');
  for (var i = 0; i < rows.length; i++) {
    var rowElements = rows[i].children;
    if (rowElements.length == 8) {
      var timestamp = rowElements[7].firstElementChild;
      var parts = timestamp.title.split(/, | | at /);
      if (parts.length == 7) {
        if (/:/.test(timestamp.textContent)) {
          var time = parts[5].split(':');
          time[0] = parseInt(time[0],10);
          if (/[Aa][Mm]/.test(parts[6])) {
            if (time[0] == 12) {
              time[0] = 0;
            }
          }
          if (/[Pp][Mm]/.test(parts[6])) {
            time[0] = time[0] + 12;
            if (time[0] == 24) {
              time[0] = 0;
            }
          }
          timestamp.textContent = ('0' + time[0]).slice(-2) + ':' + time[1] + ' (' + parts[6] + ')';
        } else {
          var month = 1 + ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'].indexOf(parts[1]);
          timestamp.textContent = parts[3] + '-' + ('0' + month).slice(-2) + '-' + ('0' + parts[2]).slice(-2);
        }
      }
    }
  }
}

0

上面的2个脚本对我来说不是开箱即用的,因此我针对我的情况重写了它们(Firefox v57 + Tempermonkey和Gmail语言环境en-UK)。

// ==UserScript==
// @name         ISO Date for Gmail
// @namespace    http://rabin.io/
// @version      0.1
// @description  Change Gmail date format to ISO 8601, per /webapps//q/89499
// @author       Rabin
// @match        https://mail.google.com/mail/u/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function() {
    'use strict';


    window.setInterval(toISO, 1000);

    function toISO() {

        var rows = document.getElementsByClassName('xW');
        for (var i = 0; i < rows.length; i++) {

            var timestamp = rows[i].firstElementChild.title.split(/, | | at /);

            if (timestamp.length == 5) {
                var d = new Date(timestamp[1] + " " + timestamp[0] + " " + timestamp[2] + " " + timestamp[4]);
                var x = rows[i].firstChild;
                //x.textContent = d.toISOString();
                x.textContent = d.getFullYear() + '-' + ('0' + (d.getMonth()+1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2);
            }

        }
    }

})();

-2

尝试用加拿大法语代替欧洲法语...


对于仅数字日期,自2018年中期UI更改以来,Français给出dd / mm / yyyy,而Français(加拿大)给出yy-mm-dd。ISO 8601和ISO 8601都不是模棱两可的,后者产生了08-08-19和13-03-10这样丑陋而神秘的结构。
Mathieu K.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.