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ć?

użytkownik3625547
źródło
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/

użytkownik3470953
źródło
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]
Darth Egregious
źródło
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);
Fernando Aguilar
źródło
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);

John Slegers
źródło
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
orangleliu
źródło
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('-');
aqwsez
źródło
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>

Nifemi Sola-Ojo
źródło
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;)

Pardeep Jain
źródło
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/

użytkownik1920925
źródło
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()));

Luo Jiong Hui
źródło
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'

Aleksandr Belugin
źródło
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]
krsoni
źródło
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
sean1093
źródło
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.

Erik Pukinskis
źródło
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")
Michael Baldry
źródło
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!

Williaan Lopes
źródło
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));
Gergo Erdosi
źródło
2

Date.js jest do tego świetny.

require("datejs")
(new Date()).toString("yyyy-MM-dd")
Tan Wang
źródło
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));

Andrei
źródło
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>

antylopa
źródło
1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)
Lin
źródło
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');
m1m1k
źródło
Ł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);
Sok roślinny
źródło
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))

Panayiotis Georgiou
źródło
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

Philipp
źródło
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);
}
kadrian
źródło
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.

GameSalutes
źródło
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);

suleman
źródło
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));

KARTHIKEYAN.A
źródło
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));

RobG
źródło