Как отформатировать дату в JavaScript - PullRequest
1732 голосов
/ 24 августа 2010

Как мне отформатировать объект даты JavaScript для печати как 10-Aug-2010?

Ответы [ 49 ]

1 голос
/ 04 мая 2016

2,39 КБ минимизировано. Один файл. https://github.com/rhroyston/clock-js

10 августа 2010 года будет:

var str = clock.month
str.charAt(0).toUpperCase() + str.slice(1,3); //gets you "Aug"
console.log(clock.day + '-' + str + '-' + clock.year); //gets you 10-Aug-2010



1 голос
/ 16 декабря 2017

Я знаю, что кто-то может сказать, что это глупое решение, но оно делает свое дело, удаляя ненужную информацию из строки даты.

yourDateObject производит:

Ср. 13 декабря2017 20:40:40 GMT + 0200 (EET)

yourDateObject.toString().slice(0, 15); производит:

Ср. 13 декабря 2017

1 голос
/ 21 декабря 2015

Короткий, широко совместимый подход:

function formatDate(date) {
    date.toISOString()
    .replace(/^(\d+)-(\d+)-(\d+).*$/, // Only extract Y-M-D
        function (a,y,m,d) {
            return [
                d, // Day
                ['Jan','Feb','Mar','Apr','May','Jun',  // Month Names
                'Jul','Ago','Sep','Oct','Nov','Dec']
                [m-1], // Month
                y  // Year
            ].join('-') // Stitch together
        })
}

Или как одна строка:

date.toISOString().replace(/^(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+).(\d+)Z$/, function (a,y,m,d) {return [d,['Jan','Feb','Mar','Apr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'][m-1],y].join('-')})
1 голос
/ 27 октября 2017

Следующий код позволит вам отформатировать дату в DD-MM-YYYY (27-12-2017) или DD MMM YYYY (27 декабря 2017):

/** Pad number to fit into nearest power of 10 */
function padNumber(number, prependChar, count) {
  var out = '' + number; var i;
  if (number < Math.pow(10, count))
    while (out.length < ('' + Math.pow(10, count)).length) out = prependChar + out;

  return out;
}

/* Format the date to 'DD-MM-YYYY' or 'DD MMM YYYY' */
function dateToDMY(date, useNumbersOnly) {
  var months = [
    'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 
    'Nov', 'Dec'
  ];

  return '' + padNumber(date.getDate(), '0', 1) + 
   (useNumbersOnly? '-' + padNumber(date.getMonth() + 1, '0', 1) + '-' : ' ' + months[date.getMonth()] + ' ')
    + date.getFullYear();
}

Измените порядок date.getFullYear() и padNumber(date.getDate(), '0', 1), чтобы сделать функцию dateToYMD().

Подробнее см. repl.it .

0 голосов
/ 20 апреля 2019

Этот Модуль может легко обрабатывать в большинстве случаев.Это часть большого пакета npm от Locutus, который включает в себя множество функций, но может использоваться полностью независимо от самого пакета, просто скопируйте вставить / адаптировать немного, если не работает с npm (смените модуль на простоfunction)

В качестве второго параметра он принимает отметку времени, которая может поступать откуда угодно, например, Date.getTime ()

Кроме того, Locutus поддерживает больший модуль datetime, также внутри пакета locutusчто даст более объектно-ориентированный способ его использования

Здесь вы можете видеть другие функции даты и времени в виде модулей, которые также оказались очень полезными.

Вы можетенайти документацию по параметрам и форматным строкам здесь (обратите внимание, что сайт doc является сайтом php, но реализация locutus соответствует точно таким же спецификациям)

Примеры date Модуль

date('H:m:s \\m \\i\\s \\m\\o\\n\\t\\h', 1062402400)//'07:09:40 m is month'

date('F j, Y, g:i a', 1062462400)//'September 2, 2003, 12:26 am'

date('Y W o', 1062462400)//'2003 36 2003'

var $x = date('Y m d', (new Date()).getTime() / 1000) $x = $x + '' var $result = $x.length // 2009 01 09    10

date('W', 1104534000)   //'52'

date('B t', 1104534000) //'999 31'

date('W U', 1293750000.82); // 2010-12-31   '52 1293750000'

date('W', 1293836400); // 2011-01-01    '52'

date('W Y-m-d', 1293974054); // 2011-01-02  '52 2011-01-02'
0 голосов
/ 15 мая 2012

Эта библиотека может форматировать объект даты и анализировать отформатированную строку обратно в объект даты. Он использует формат Java (класс SimpleDateFormat). Название месяцев и дней может быть локализовано.

http://www.javascriptsource.com/repository/javascripts/2009/03/880961/JS_Simple_Date_Format.zip

Пример:

var sdf = new JsSimpleDateFormat("dd-MMM-yyyy");
var formattedString = sdf.format(new Date());
var dateObject = sdf.parse("10-Aug-2010");
0 голосов
/ 24 января 2019

Простая функция, которая может возвращать дату, дату + время или только время:

var myDate = dateFormatter("2019-01-24 11:33:24", "date-time");
// >> RETURNS "January 24, 2019 11:33:24"

var myDate2 = dateFormatter("2019-01-24 11:33:24", "date");
// >> RETURNS "January 24, 2019"

var myDate3 = dateFormatter("2019-01-24 11:33:24", "time");
// >> RETURNS "11:33:24"


function dateFormatter(strDate, format){
    var theDate = new Date(strDate);
    if (format=="time")
       return getTimeFromDate(theDate);
    else{
       var dateOptions = {year:'numeric', month:'long', day:'numeric'};
       var formattedDate = theDate.toLocaleDateString("en-US", + dateOptions);
       if (format=="date")
           return formattedDate;
       return formattedDate + " " + getTimeFromDate(theDate);
    }
}

function getTimeFromDate(theDate){
    var sec = theDate.getSeconds();
    if (sec<10)
        sec = "0" + sec;
    var min = theDate.getMinutes();
    if (min<10)
        min = "0" + min;
    return theDate.getHours() + ':'+ min + ':' + sec;
}

0 голосов
/ 06 ноября 2018

Вам не нужны никакие библиотеки.Просто извлеките компоненты даты и создайте строку.Вот как получить YYYY-MM-DD формат.Также обратите внимание на индекс месяца «январь равен 0, февраль равен 1 и т. Д.»

// @flow

type Components = {
  day: number,
  month: number,
  year: number
}

export default class DateFormatter {
  // YYYY-MM-DD
  static YYYY_MM_DD = (date: Date): string => {
    const components = DateFormatter.format(DateFormatter.components(date))
    return `${components.year}-${components.month}-${components.day}`
  }

  static format = (components: Components) => {
    return {
      day: `${components.day}`.padStart(2, '0'),
      month: `${components.month}`.padStart(2, '0'),
      year: components.year
    }
  }

  static components = (date: Date) => {
    return {
      day: date.getDate(),
      month: date.getMonth() + 1,
      year: date.getFullYear()
    }
  }
}
0 голосов
/ 23 июля 2012
    function DateAdd(x) {

        var myDate = new Date(x);
        myDate.setDate(myDate.getDate() + 9);
        //var sDate = new Date(Date.parse(myDate, "MM/dd/yyyy"));

        today = new Date(myDate);
        var dateString = today.format("MM/dd/yyyy");
        alert(dateString);
       // alert(sDate.toString('dddd, MMMM ,yyyy'));


       // var confirmed = window.confirm("change a record, would you like to continue ?");
        return false;
    }
...