Sformatuj datę JavaScript jako rrrr-mm-dd


382

Mam randkę w formacie Sun May 11,2014. Jak przekonwertować go na 2014-05-11JavaScript?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

Powyższy kod daje mi ten sam format dat sun may 11,2014. Jak mogę to naprawić?


7
Wątpię, aby powyższy kod zawierał coś więcej niż błąd składniowy.
plalx

Naprawdę rozważ użycie biblioteki takiej jak Moment.js. Sformatuje pożądany wynik :)
Ankur

5
Po co korzystać z biblioteki, gdy 5 linii kodu może wykonać pracę? @Ankur
Black Mamba


Powiązane: Jakie są prawidłowe ciągi daty i godziny w JavaScript? Zwróć uwagę, że „niedz. 11,2014” nie jest prawidłowym ciągiem daty, a jego analiza może się nie powieść w niektórych przeglądarkach.
str

Odpowiedzi:


524

Możesz to zrobić:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}

Przykład użycia:

alert(formatDate('Sun May 11,2014'));

Wynik:

2014-05-11

Demo na JSFiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
Naprawdę wiele deklaracji zmiennych w tej samej instrukcji? stackoverflow.com/questions/694102/…
bhspencer

8
@ Fuser97381 Wiele deklaracji zmiennych w tej samej instrukcji jest czymś więcej niż tylko preferencją stylu estetycznego. To niebezpieczna praktyka. Jeśli nieumyślnie się nie powiedzie, dodaj przecinek po każdej deklaracji, co spowoduje utworzenie zmiennych globalnych. Nie należy zachęcać do tego, co może stać się kanoniczną odpowiedzią na pytanie.
bhspencer

6
'use strict';@bhspencer
Vix,

3
Ponowne formatowanie ciągu daty nie powinno zależeć od pomyślnego parsowania niestandardowych ciągów przez wbudowany analizator składni. Biorąc pod uwagę format OP, można go ponownie sformatować przy użyciu mniejszego kodu bez użycia daty.
RobG

Jak zwiększyć o kolejne 30 dni w zakresie 1 ~ 31?
Steve Angello

456

Po prostu skorzystaj z wbudowanej toISOStringmetody, która dostosowuje datę do formatu ISO 8601:

yourDate.toISOString().split('T')[0]

Gdzie twojaData jest twoim obiektem daty.

Edycja: jakiś facet napisał to, aby obsłużyć strefę czasową w komentarzach:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]

238
UWAŻAJ, korzystając z tej metody, ponieważ najpierw konwertuje ona datę na UTC. Jeśli znajdujesz się w strefie czasowej +, a Twoja część czasu jest wcześnie, dzień może zostać cofnięty o jeden dzień. Alternatywnie, jeśli znajdujesz się w strefie czasowej, a Twoja pora czasu jest późna w ciągu dnia, dzień może się zmienić.
Luke Baulch,

4
Spróbuj zamiast tego:new Date(yourDateStr).toISOString().split('T')[0]
exbuddha,

24
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0] powinno to rozwiązać problem strefy czasowej
mjwrazor

5
now.toISOString().substring(0,10); Jest to czystsza alternatywa, ponieważ przypomina, że YYYY-MM-DDjest to pierwszych dziesięć znaków pełnego formatu ISO
Gutimore

4
Uwaga: korzystając z pomocnego rozwiązania skomentowanego przez @mjwrazor, musiałem odjąć zamiast dodać przesunięcie, aby uzyskać poprawną datę (zmienić na + (offseta - (offset)
rokoko

135

Korzystam z tego sposobu, aby uzyskać datę w formacie rrrr-mm-dd :)

var todayDate = new Date().toISOString().slice(0,10);

14
Jak radzisz sobie z przełączaniem dat według dnia, jak wspomniano tutaj przez @Luke_Baulch?
Malvineous

7
Możesz to zrobić: var todayDate = new Date (); TodayDate.setMinutes (TodayDate.getMinutes () - TodayDate.getTimezoneOffset ()); TodayDate.toISOString (). slice (0,10); Powinno to pomóc uniknąć problemu UTC.
Fernando Aguilar,

1
@FernandoAguilar Istnieje jednak jedna wątpliwość: skąd wiemy, że musimy odjąć przesunięcie lub dodać je?
dlaczego 8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);daje mi "2018-03-25". W innym systemie var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);daje mi "2018-03-27".
Salman A

2
Nie zawsze działa Czasami odejmuje dzień z powodu konwersji UTC.
NickG

110

Najprostszym sposobem przekonwertowania daty na format rrrr-mm-dd jest:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

Jak to działa:

  • new Date("Sun May 11,2014")konwertuje ciąg "Sun May 11,2014"do obiektu daty reprezentującego czas Sun May 11 2014 00:00:00w strefie czasowej na podstawie bieżących ustawień regionalnych (ustawienia systemowe hosta)
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))konwertuje datę na obiekt daty odpowiadający czasowi Sun May 11 2014 00:00:00w UTC (czas standardowy), odejmując przesunięcie strefy czasowej
  • .toISOString() konwertuje obiekt daty na ciąg ISO 8601 2014-05-11T00:00:00.000Z
  • .split("T") dzieli ciąg na tablicę ["2014-05-11", "00:00:00.000Z"]
  • [0] pobiera pierwszy element z tej tablicy

Próbny

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


20
Nikt inny nie jest zaskoczony, że jest to najprostszy sposób?
przerwa

Jednak .toISOString () nie działa poprawnie z czasem letnim.
Pomysły Joe

2
@JoeDevmon: Nie widzę tu znaczenia. - (date.getTimezoneOffset() * 60000 )Nieco powinno wyeliminować wszelkie różnice czasowej, w tym wpływu czasu letniego.
John Slegers

2
@JohnSlegers o tym myślałem, ale w niektórych przypadkach wciąż dostawałem dzień wcześniej. Dokonałem refaktoryzacji i twój przykład działa teraz. Musiałem mieć dziwny ciąg daty czy coś takiego. Dzięki za trzymanie się go i wskazanie tego. +1 👍
Pomysły Joe

2
Szukałem wysoko i nisko w SO i innych witrynach, aby znaleźć najlepszy sposób radzenia sobie z problemami strefy czasowej z datami w JS, i bez wahania, jest to zdecydowanie najłatwiejsze i najlepsze. Dziękuję Ci!
HartleySan

34
format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

Wynik:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11

1
Podoba mi się dodatkowa elastyczność, jaką daje to rozwiązanie w porównaniu z innymi odpowiedziami na to pytanie. Nie przetestowałem tego dokładnie, ale dla pożądanego formatu (tj. „Rrrr-MM-dd gg: mm: ss”) działa tak, jak oczekiwano.
porcus

3
Możesz łatwo uniknąć eval.
Salman A

3
oto wersja, która pozwala uniknąć ewaluacji
m1m1k

2
Korzystałem z tej odpowiedzi. return ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
Zastąpiłem

26

Kombinacja niektórych odpowiedzi:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');

Najbardziej podoba mi się to rozwiązanie - łatwe do odczytania i nie zależy od toISOString()potencjalnych pułapek w strefie czasowej przy użyciu tej funkcji.
matt.fc

to pierwszy, który nie powoduje bólu mojego mózgu.
ckapilla

22

Jeśli nie masz nic przeciwko korzystaniu z bibliotek, możesz po prostu użyć biblioteki Moments.js w następujący sposób:

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


Fajne rozwiązanie, ale jest to pakiet 300 KB
Adam

13

Po prostu użyj tego:

var date = new Date('1970-01-01'); // Or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

Prosty i słodki;)


4
padding nie jest dostępny dla formatu 2 liter. pokaże jedną cyfrę, jeśli data lub miesiąc jest krótszy niż 10, dlatego nie można użyć tego bezpośrednio.
Yatender Singh

tak, ale można to osiągnąć po prostu za pomocą javascript, myślę, że w sumie do twoich wymagań, prawda? @YatenderSingh
Pardeep Jain

4
tak, popraw, ale sprawdź tytuł pytania „format rrrr-mm-dd”, jakiego chce :)
Yatender Singh

var stara_data = nowa data (data); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitti Munirah Abdul Razak

1
Świetny. Działało, było proste i zwięzłe!
Waleed93

12

toISOString()zakłada, że ​​Twoja data to czas lokalny i konwertuje ją na UTC. Otrzymasz niepoprawny ciąg daty.

Poniższa metoda powinna zwrócić to, czego potrzebujesz.

Date.prototype.yyyymmdd = function() {         

    var yyyy = this.getFullYear().toString();                                    
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based         
    var dd  = this.getDate().toString();             

    return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};

Źródło: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


8

Pobierz rok, miesiąc i dzień, a następnie połącz je. Prosto, prosto i dokładnie.

function formatDate(date) {
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 101).toString().substring(1);
    var day = (date.getDate() + 100).toString().substring(1);
    return year + "-" + month + "-" + day;
}

//Usage example:
alert(formatDate(new Date()));


8

Możesz użyć toLocaleDateString('fr-CA')na Dateobiekcie

console.log(new Date('Sun May 11,2014').toLocaleDateString('fr-CA'));

Dowiedziałem się również, że te ustawienia regionalne dają prawidłowy wynik z listy ustawień regionalnych Lista wszystkich ustawień regionalnych i ich krótkie kody?

'en-CA'
'fr-CA'
'lt-LT'
'sv-FI'
'sv-SE'


Wiesz, dlaczego to działa? Czy format ISO jest tylko domyślny, czy te lokalizacje rzeczywiście używają tego formatu? Gdyby to było pierwsze, martwiłbym się, że może się nieoczekiwanie zmienić w przyszłości.
jymbob

To nie działa z NodeJS poza przeglądarką.
Donato

@jymbob Myślę, że te lokalizacje naprawdę używają tych formatów. Doszedłem do tej samej odpowiedzi, patrząc na tę stronę Wikipedii: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă

5

Aby uwzględnić strefę czasową, ten linijka powinna być dobra bez żadnej biblioteki:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

5

Możesz spróbować: https://www.npmjs.com/package/timesolver

npm i timesolver

Użyj go w swoim kodzie:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

Możesz uzyskać ciąg daty, używając tej metody:

getString

4

Żadna z tych odpowiedzi mnie nie zadowoliła. Chciałem rozwiązania międzyplatformowego, które zapewniło mi dzień w lokalnej strefie czasowej bez korzystania z zewnętrznych bibliotek.

Oto co wymyśliłem:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

To powinno zwrócić dzień daty, w formacie RRRR-MM-DD, w strefie czasowej, do której odnoszą się daty.

Na przykład localDay(new Date("2017-08-24T03:29:22.099Z"))wróci, "2017-08-23"mimo że jest już 24 w UTC.

Aby działał w programie Internet Explorer 8, musisz wypełnić plik Date.prototype.toISOString , ale powinien on być obsługiwany wszędzie indziej.


Być może warto zauważyć, że da ci to 23.08.2017, tylko jeśli jesteś wystarczająco opóźniony w stosunku do UTC (np. W USA).
Simon D

3

Sugeruję użycie czegoś takiego jak formatDate-js zamiast próbować go replikować za każdym razem. Wystarczy użyć biblioteki, która obsługuje wszystkie najważniejsze akcje strftime.

new Date().format("%Y-%m-%d")

3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

lub

new Date().toISOString().split('T')[0]
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString()
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString().split('T')[0]

Spróbuj tego!


Druga opcja może wyświetlać niewłaściwą datę, ponieważ wyświetla dane w strefie czasowej UTC.
Ever Dev

2

Oto jeden ze sposobów, aby to zrobić:

var date = Date.parse('Sun May 11,2014');

function format(date) {
  date = new Date(date);

  var day = ('0' + date.getDate()).slice(-2);
  var month = ('0' + (date.getMonth() + 1)).slice(-2);
  var year = date.getFullYear();

  return year + '-' + month + '-' + day;
}

console.log(format(date));

2

Date.js jest do tego świetny.

require("datejs")
(new Date()).toString("yyyy-MM-dd")

1

function myYmd(D){
    var pad = function(num) {
        var s = '0' + num;
        return s.substr(s.length - 2);
    }
    var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate());
    return Result;
}

var datemilli = new Date('Sun May 11,2014');
document.write(myYmd(datemilli));


1

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>


1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

1

Kilka poprzednich odpowiedzi było w porządku, ale nie były zbyt elastyczne. Chciałem czegoś, co naprawdę poradziłoby sobie z większą liczbą przypadków brzegowych, więc wziąłem odpowiedź @orangleliu i rozwinąłem ją. https://jsfiddle.net/8904cmLd/1/

function DateToString(inDate, formatString) {
    // Written by m1m1k 2018-04-05

    // Validate that we're working with a date
    if(!isValidDate(inDate))
    {
        inDate = new Date(inDate);
    }

    // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
    //formatString = CountryCodeToDateFormat(formatString);

    var dateObject = {
        M: inDate.getMonth() + 1,
        d: inDate.getDate(),
        D: inDate.getDate(),
        h: inDate.getHours(),
        m: inDate.getMinutes(),
        s: inDate.getSeconds(),
        y: inDate.getFullYear(),
        Y: inDate.getFullYear()
    };

    // Build Regex Dynamically based on the list above.
    // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
    var dateMatchRegex = joinObj(dateObject, "+|") + "+";
    var regEx = new RegExp(dateMatchRegex,"g");
    formatString = formatString.replace(regEx, function(formatToken) {
        var datePartValue = dateObject[formatToken.slice(-1)];
        var tokenLength = formatToken.length;

        // A conflict exists between specifying 'd' for no zero pad -> expand
        // to '10' and specifying yy for just two year digits '01' instead
        // of '2001'.  One expands, the other contracts.
        //
        // So Constrict Years but Expand All Else
        if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
        {
            // Expand single digit format token 'd' to
            // multi digit value '10' when needed
            var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
        }
        var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
        return (zeroPad + datePartValue).slice(-tokenLength);
    });

    return formatString;
}

Przykładowe użycie:

DateToString('Sun May 11,2014', 'MM/DD/yy');
DateToString('Sun May 11,2014', 'yyyy.MM.dd');
DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');

Ładne czyste i skomentowane rozwiązanie. Jestem jednak sceptycznie nastawiony do pierwszego argumentu, który po cichu zostaje zastąpiony nową, nową datą, jeśli nie zostanie uznany za prawidłową datę. Wolałbym umieścić ten „optionnal domyślną wartość” jako argument 2 zamiast, i powrócić jakiś wyjątek (może być proste „Nieprawidłowy format daty” zwróciło string) w przypadku, gdy format nie jest rozpoznany, tak że błąd pojawia się wyraźnie do tester / użytkownik
Balmipour

1

Pomogło mi to uzyskać bieżącą datę w żądanym formacie (RRRRMMDD GG: MM: SS):

var d = new Date();

var date1 = d.getFullYear() + '' +
            ((d.getMonth()+1) < 10 ? "0" + (d.getMonth() + 1) : (d.getMonth() + 1)) +
            '' +
            (d.getDate() < 10 ? "0" + d.getDate() : d.getDate());

var time1 = (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) +
            ':' +
            (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) +
            ':' +
            (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());

print(date1+' '+time1);

1

Biblioteka nie jest potrzebna

Po prostu czysty JavaScript.

Poniższy przykład pokazuje ostatnie dwa miesiące od dzisiaj:

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))


Niebezpieczny. W takim przypadku ignorujesz przesunięcie strefy czasowej.
maxence51

1

Format daty zgodny z PHP

Oto mała funkcja, która może przyjmować te same parametry co funkcja PHP date()i zwracać ciąg daty / godziny w JavaScript.

Pamiętaj, że nie wszystkie opcje formatu date () z PHP są obsługiwane. Możesz rozszerzyć partsobiekt, aby utworzyć brakujący token formatu

/**
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"

Sens

Oto lista z zaktualizowaną wersją formatDate()funkcji i dodatkowymi przykładami: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9


0

Kolejna kombinacja odpowiedzi. Ładnie czytelny, ale trochę długi.

function getCurrentDayTimestamp() {
  const d = new Date();

  return new Date(
    Date.UTC(
      d.getFullYear(),
      d.getMonth(),
      d.getDate(),
      d.getHours(),
      d.getMinutes(),
      d.getSeconds()
    )
  // `toIsoString` returns something like "2017-08-22T08:32:32.847Z"
  // and we want the first part ("2017-08-22")
  ).toISOString().slice(0, 10);
}

0

Jeśli data musi być taka sama we wszystkich strefach czasowych, na przykład reprezentuje pewną wartość z bazy danych, pamiętaj, aby użyć wersji UTC dnia, miesiąca i funkcji pełnych funkcji na obiekcie daty JavaScript, ponieważ będzie to wyświetlane w czasie UTC i unikaj błędów typu „jeden po drugim” w niektórych strefach czasowych.

Co więcej, użyj biblioteki dat Moment.js do tego rodzaju formatowania.


0

Zmodyfikowałem odpowiedź Samit Satpute w następujący sposób:

var newstartDate = new Date();
// newstartDate.setDate(newstartDate.getDate() - 1);
var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format
console.log(startDate);


0

Sformatuj i znajdź datę maksymalną i minimalną na podstawie danych mapowania:

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
  let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));


Jak to się ma do pytania (formatowanie daty)?
Peter Mortensen

0

Ponowne formatowanie ciągu daty jest dość proste, np

var s = 'Sun May 11,2014';

function reformatDate(s) {
  function z(n){return ('0' + n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.split(/\W+/);
  return b[3] + '-' +
    z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
    z(b[2]);
}

console.log(reformatDate(s));

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.