Изменить формат даты Gmail на ISO 8601 (т. Е. Гггг-мм-дд)

18

Есть ли способ изменить формат даты Gmail на ISO 8601 (т. Е. Гггг-мм-дд)?

Вместо того :

введите описание изображения здесь

Франк Дернонкур
источник

Ответы:

9

Я не вижу встроенного способа переключения на формат ISO, но я написал для этого скрипт пользователя . Испытано в Chrome с Tampermonkey. Если Tampermonkey установлен, нажмите кнопку Raw в Github, чтобы запросить установку скрипта.

Вы не просили изменить формат времени, поэтому я сохранил его, как и в сегодняшних электронных письмах:

даты

Включая скрипт здесь для полноты. (добавлены подстановочные знаки в 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);
        }
      }
    }
  }
}
user755496
источник
Обратите внимание, что для работы этой версии скрипта также необходимо установить для языка Gmail значение «Английский (США)» в меню «Настройки» / «Общее» (по состоянию на сегодня 2017-10-25). Он не будет работать с "английским (Великобритания)".
WIP
10

Это контролируется исключительно через настройку языка.

Если мой язык установлен на английский (США), даты в списке бесед отображаются в формате Mmm d , а даты за прошлый год и ранее - в формате мм / дд / гггг .

При изменении на английский (Великобритания) формы изменяются на d Mmm и dd / mm / yyyy соответственно.

Там нет других вариантов для английского языка в Gmail. При изменении на французский, он следует в основном тому же стилю, что и английский (но, очевидно, на французском, который я не говорю и не читаю).

В Gmail нет других настроек для локализации, и нет способа выбрать формат даты независимо от языка. Казалось бы, ваш единственный выбор в настоящее время - использовать что-то вроде пользовательского сценария, предлагаемого ими-когда-либо меняющимся именем .

пиво
источник
Начиная с изменения пользовательского интерфейса в середине 2018 года, теперь для чисел только с числами у нас есть m / d / yy на английском (США), dd / mm / yyyy на английском (UK) и Français, и yy-mm-dd на Français ( Канада). Это действительно не ISO 8601.
Матье К.
1

Оригинальный скрипт : user79865

  1. Заменены @match на @include для лучшей совместимости с 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 locale 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

Попробуйте канадский французский вместо европейского французского ...

OSSYULYYZ
источник
Для цифр только с датами, начиная с изменения пользовательского интерфейса в середине 2018 года, Français дает дд / мм / гггг, а Français (Канада) дает гг-мм-дд. Ни один из них не является ISO 8601, оба являются неоднозначными, и последний дает такие уродливые и загадочные конструкции, как 08-08-19 и 13-03-10.
Матье К.