Как отформатировать дату JavaScript в британский формат? - PullRequest
0 голосов
/ 18 января 2019

В настоящее время я изучаю JavaScript и имею вопрос о функции, которая у меня есть, которая будет генерировать дату и время в реальном времени для использования в моем приложении.

Я бы хотел отформатировать мою дату JavaScript в конкретном британском формате, так как она в настоящее время в американском формате.

Мой код в настоящее время выглядит так

<a> 
        <script type="text/javascript">
            document.write ('<p><span id="date">', new Date().toLocaleString(), '<\/span>.<\/p>')
            if (document.getElementById) onload = function () {
                 setInterval ("document.getElementById ('date').firstChild.data = new Date().toLocaleString()", 50)
                                }
        </script>
    </a>

Вышеприведенное отобразится следующим образом:

1/18/2019, 12:58:13 PM

Ожидаемое
Британский формат - ДД / ММ / ГГГГ, поэтому я хочу, чтобы дата была 18/1/2019. Время то, что я ожидал.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вам необходимо специально добавить локаль 'en-GB' к toLocaleString:

<a>
  <script type="text/javascript">
    document.write('<p><span id="date">', new Date().toLocaleString('en-GB'), '<\/span>.<\/p>')
    if (document.getElementById) onload = function() {
      setInterval("document.getElementById ('date').firstChild.data = new Date().toLocaleString('en-GB')", 1000)
    }
  </script>
</a>

Что касается вашего кода, это может быть сделано с небольшим рефакторингом.

1) Разработчики редко используют document.write для чего-либо еще

2) Передача строки в setInterval считается антишаблоном, так как ее можно использовать для XSS-атак .

3) Вам не нужно обновлять код каждые 50 секунд. Раз в секунду все будет хорошо.

Вот рефакторинг, за которым немного легче следовать.

// Add the HTML to the document body element
document.body.innerHTML = '<p><span id="date"></span><p>';

// Grab the date element
const date = document.querySelector('#date');

// Create a timer that calls the `changeDate` function once a second
const timer = setInterval(changeDate, 1000);

function changeDate() {

  // Set the textContent of `date` to the new date
  date.textContent = new Date().toLocaleString('en-GB');
}
0 голосов
/ 18 января 2019

Попробуйте

let d= new Date().toLocaleString('en-GB')
let dNoZeros = d.replace(/^0?(\d?\d).0?(\d?\d)/, "$1/$2");

console.log(d);          // 18/01/2019, 14:20:58
console.log(dNoZeros);   // 18/1/2019, 14:20:58
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...