Javascript .toLocaleString () не соблюдает '2-di git' - PullRequest
4 голосов
/ 14 февраля 2020

Оригинальный вопрос : Как получить час / месяц для форматирования '2-di git'.

const event = new Date(2012, 3, 20, 3, 0, 0);

Редактировать ... Извинения все, я не очень часто это использую

Реальная проблема заключается в том, какая версия chrome установлена ​​на вашем компьютере, она по-разному учитывает это форматирование:

Например:

new Date(1561984526000).toLocaleString("ja-JP", {hour: "2-digit"})
// Chrome 80 (and other releases): "08時"
// Chrome 79: "8時"

enter image description here

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Лично я никогда не доверяю функции toLocaleString, я предпочитаю использовать getMonth и lpad для форматирования даты вручную.

Еще одним преимуществом является то, что вы ничего не делаете для этого

function lpad (strModify, intMaxPad) 
{
    if (typeof strModify == 'undefined') 
    {
        return false;
    }
    strModify = strModify.toString();
    return strModify.length < intMaxPad ? lpad("0" + strModify, intMaxPad) : strModify;
}

$(function(){

    var objDate = new Date(2012, 3, 20, 3, 0, 0);
    console.log( lpad((objDate.getMonth() + 1), 2) + '/' + lpad(objDate.getDate(), 2) + '/' + objDate.getFullYear()  );
});

Вы также можете использовать библиотеку Moment Luxon

0 голосов
/ 14 февраля 2020

Основная проблема заключается в том, что вы передаете options в первом параметре, который соответствует строке локали. options принадлежит второму параметру.

Вам также необходимо включить другие поля (год, день, минута), если вы хотите, чтобы они были в результатах.

const event = new Date(2012, 3, 20, 3, 0, 0);
console.log(event.toLocaleString('en-US', { 
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit' }
));

Вы можете передать undefined в первом параметре, если хотите использовать текущий языковой стандарт пользователя.

const event = new Date(2012, 3, 20, 3, 0, 0);
console.log(event.toLocaleString(undefined, { 
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit' }
));
0 голосов
/ 14 февраля 2020

это потому что вы забыли добавить hour12 : false

const myDate = new Date(2012, 3, 20, 3, 0, 0)
  ,   dateOpt = { month: '2-digit', hour: '2-digit', hour12:false }
  
  
console.log( myDate.toLocaleString(dateOpt) ); // 20/04/2012 à 03:00:00
// or 
console.log( myDate.toLocaleString('en-US',dateOpt) ); // 04, 03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...