Форматирование даты в javascript до миллисекунды

Мы используем следующую js lib от Microsoft https://ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js

var datetimehigh = new Date(2011,01,12,14,45,55,596);

var sDate =  datetimehigh.format("dd/MM/yyyy HH:mm:ss sss");

Я не могу заставить работать миллисекундную часть. Обратите внимание, что этот формат взят из Microsoft Mvc Ajax lib.

5 ответов

Решение

На это указывает буква f:

"dd/MM/yyyy HH:mm:ss fff"

Если вы используете родной Date объект javascript, вы можете просто использовать .toISOString метод для получения форматированной строки с миллисекундами:

const date = new Date();
const dateString = date.toISOString(); // "2020-01-06T19:57:12.146Z"

Обратите внимание, что использование .toString не даст вам точности до миллисекунд.

Используйте 'S' для форматирования в миллисекундах:

"dd/MM/yyyy HH:mm:ss:SSS"

Используя библиотеку формата даты, она должна выглядеть примерно так:

var nowMilliseconds = new Date().format("yyyy-mm-dd HH:MM:ss l");

http://blog.stevenlevithan.com/archives/date-time-format

L за миллисекунды с двумя цифрами

l (минус) для миллисекунд с тремя цифрами

Вот как я это делаю:

      function date_to_string_with_milliseconds(date){
  let date_str = date.toString() 
  let date_without_milliseconds = new Date(date_str) // truncated date since milliseconds are not included
  let milliseconds_delta = date - date_without_milliseconds
  let date_str_with_milliseconds = date_str.replace(/(^.*:\d\d:\d\d)(.*$)/, `$1:${milliseconds_delta}$2`)
  return date_str_with_milliseconds
}

Использование:

      date_to_string_with_milliseconds(new Date(Date.now())).toString()
// outputs 'Wed Nov 30 2022 16:40:42:991 GMT+0530 (India Standard Time)'

Такой способ имеет несколько преимуществ:

  1. Строка даты, которую вы получаете в качестве вывода, может быть преобразована обратно в объект Date.

  2. Это никак не меняет исходный объект даты, поскольку вам нужно только строковое представление.

Другие вопросы по тегам