Zmień format daty Gmaila na ISO 8601 (tj. Rrrr-mm-dd)

18

Czy jest jakiś sposób na zmianę formatu daty Gmaila na ISO 8601 (tj. Rrrr-mm-dd)?

Zamiast :

wprowadź opis zdjęcia tutaj

Franck Dernoncourt
źródło

Odpowiedzi:

9

Nie widzę wbudowanego sposobu na przejście do formatu ISO, ale napisałem dla tego skrypt użytkownika . Testowane w Chrome z Tampermonkey. Jeśli zainstalowano Tampermonkey, kliknięcie przycisku Raw w Github powinno wyświetlić monit o instalację skryptu.

Nie poprosiłeś o zmianę formatu czasu, więc zachowałem go tak, jak w przypadku dzisiejszych e-maili:

Daktyle

Łącznie ze skryptem tutaj dla kompletności. (dodano symbole wieloznaczne do adresu 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);
        }
      }
    }
  }
}
użytkownik755496
źródło
Pamiętaj, że musisz także ustawić opcję Gmaila na „English (US)” w menu Ustawienia / Ogólne, aby ta wersja skryptu działała (od dzisiaj 2017-10-25). Nie będzie działać z „English (UK)”.
wycierać
10

Jest to kontrolowane wyłącznie przez ustawienie języka.

Po ustawieniu mojego języka na angielski (Stany Zjednoczone) daty na liście konwersacji mają postać Mmm d , a daty z zeszłego roku i wcześniejsze - mm / dd / rrrr .

Po zmianie na angielski (Wielka Brytania) formularze zmieniają się odpowiednio na d Mmm i dd / mm / rrrr .

W Gmailu nie ma innych opcji języka angielskiego. Po zmianie na francuski ma on zasadniczo ten sam styl, co angielski w Wielkiej Brytanii (ale oczywiście w języku francuskim, którego nie mówię ani nie czytam).

W Gmailu nie ma innych ustawień lokalizacji i nie można wybrać formatu daty niezależnego od języka. Wydaje się, że w tej chwili jedynym wyborem jest użycie skryptu użytkownika sugerowanego przez ciągle zmieniającą się nazwę .

ale
źródło
Od zmiany interfejsu użytkownika w połowie 2018 r. W przypadku dat tylko liczbowych mamy teraz m / d / rr w języku angielskim (USA), dd / mm / rrrr w języku angielskim (UK) i Français, oraz rr-mm-dd w języku Français ( Kanada). Rzeczywiście nie są to ISO 8601.
Mathieu K.
1

Oryginalny skrypt autorstwa: user79865

  1. Zamieniono @match na @include dla lepszej kompatybilności z Opera + Violentmonkey.
  2. Wydłużony interwał do w pełni odpowiednio 1 sekundy.
  3. Naprawiono wyświetlanie czasu od 12 do 24 godzin, ale utrzymywałem AM / PM z powodów dyplomatycznych :)

Skrypt roboczy poniżej:

// ==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);
        }
      }
    }
  }
}
Magnus
źródło
0

Powyższy skrypt 2 nie działał dla mnie już po wyjęciu z pudełka, więc przepisałem je dla mojej skrzynki (Firefox v57 + Tempermonkey i ustawienia regionalne Gmaila 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);
            }

        }
    }

})();
Rabin
źródło
-2

Spróbuj kanadyjskiego francuskiego zamiast europejskiego francuskiego ...

OSSYULYYZ
źródło
W przypadku dat tylko liczbowych, od zmiany interfejsu użytkownika w połowie 2018 r., Français podaje dd / mm / rrrr, a Français (Kanada) podaje rr-mm-dd. Żadna z nich nie jest ISO 8601, obie są dwuznaczne, a ta ostatnia daje tak brzydkie i tajemnicze konstrukcje, jak 08-08-19 i 13-03-10.
Mathieu K.,