JavaScript tarihini yyyy-aa-gg olarak biçimlendir


382

Biçimle bir tarihim var Sun May 11,2014. 2014-05-11JavaScript kullanarak nasıl dönüştürebilirim ?

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));

Yukarıdaki kod bana aynı tarih biçimini veriyor sun may 11,2014. Bunu nasıl düzeltebilirim?


7
Yukarıdaki kod sözdizimi hatası dışında başka bir şey verdiğinden şüpheliyim.
plalx

Gerçekten Moment.js gibi bir kütüphane kullanmayı düşünün. İstenen sonuçta biçimlendirilecektir :)
Ankur

5
Neden 5 satır kod çalışabiliyorsa bir kütüphane kullanılır? @Ankur
Kara Mamba


İlgili: JavaScript'te geçerli Tarih Saat Dizeleri nedir? "Paz 11,2014 Mayıs" geçerli bir tarih dizesi değildir ve ayrıştırılması bazı tarayıcılarda başarısız olabilir.
str

Yanıtlar:


524

Yapabilirsin:

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('-');
}

Kullanım örneği:

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

Çıktı:

2014-05-11

JSFiddle hakkında demo: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
Gerçekten aynı ifadede birden fazla değişken bildirimi? stackoverflow.com/questions/694102/…
bhspencer

8
@ Fuser97381 Aynı ifadedeki birden çok değişken bildirimi, estetik bir stil tercihinden daha fazlasıdır. Bu tehlikeli bir uygulamadır. Yanlışlıkla başarısız olursanız, her bildirimden sonra virgül ekleyin. Bir sorunun kanonik cevabı haline gelmesi konusunda teşvik edilmesi gereken bir şey değil.
bhspencer

6
'use strict';@bhspencer
Vix

3
Bir tarih dizesinin yeniden biçimlendirilmesi, standart ayrıştırıcıların yerleşik ayrıştırıcı tarafından başarıyla ayrıştırılmasına bağlı olmamalıdır. OP formatı göz önüne alındığında, hiç Tarih kullanılmadan daha az kodla yeniden biçimlendirilebilir.
RobG

1 ~ 31 aralığında 30 günden fazla artış nasıl yapılır?
Steve Angello

456

toISOStringTarihinizi ISO 8601 biçimine getiren yerleşik yöntemden yararlanın :

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

Tarihinizin tarih nesneniz olduğu yer.

Düzenleme: bazı adamlar zaman dilimi yorumlarda işlemek için bu yazdı:

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

238
İlk önce UTC'ye dönüştürülürken bu yöntemle DİKKATLİ OLUN. Bir + saat dilimindeyseniz ve zaman bölümünüz günün erken saatlerinde ise, bir gün geri alınabilir. Alternatif olarak, bir saat dilimindeyseniz ve zaman bölümünüz gün geç ise, o zaman bir gün ileri gidebilir.
Luke Baulch

4
Bunun yerine şunu deneyin: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] Bu zaman dilimi sorunu
çözmelidir

5
now.toISOString().substring(0,10); Bu daha temiz bir alternatiftir, çünkü size YYYY-MM-DDtam iso formatının ilk on karakteri olduğunu hatırlatır
Gutimore

4
Not: @mjwrazor tarafından yorumlanan yararlı çözümü kullanarak, doğru tarihi almak için ofseti eklemek yerine çıkartmak zorunda kaldım (değiştirmek + (offsetiçin a - (offset)
rococo

135

Tarihi yyyy-aa-gg biçiminde almak için bu yolu kullanırım :)

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

14
@Luke_Baulch tarafından belirtildiği gibi gün değiştirmeyi bir gün nasıl idare edersiniz?
Malvineous

7
Bunu yapabilirsiniz: var todayDate = new Date (); todayDate.setMinutes (todayDate.getMinutes () - todayDate.getTimezoneOffset ()); . todayDate.toISOString () dilim (0,10); Bu UTC sorununun önlenmesine yardımcı olmalıdır.
Fernando Aguilar

1
@FernandoAguilar Bir kuşku olsa da, ofseti çıkarmamız veya eklememiz gerektiğini nasıl biliyoruz?
whyAto8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);verir "2018-03-25". Başka bir sistemde var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);bana veriyor "2018-03-27".
Salman A

2
Her zaman çalışmaz. Bazen UTC dönüşümü nedeniyle bir gün çıkarır.
NickG

110

Tarihinizi yyyy-aa-gg biçimine dönüştürmenin en basit yolu bunu yapmaktır:

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

Nasıl çalışır:

  • new Date("Sun May 11,2014")dizeyi geçerli yerel ayara bağlı olarak bir saat dilimindeki "Sun May 11,2014"zamanı temsil eden bir tarih nesnesine dönüştürür Sun May 11 2014 00:00:00(ana sistem ayarları)
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))Sun May 11 2014 00:00:00saat dilimi farkını çıkararak tarihinizi UTC'deki saate (standart saat) karşılık gelen bir tarih nesnesine dönüştürür
  • .toISOString() tarih nesnesini ISO 8601 dizesine dönüştürür 2014-05-11T00:00:00.000Z
  • .split("T") dizeyi diziye böler ["2014-05-11", "00:00:00.000Z"]
  • [0] dizinin ilk öğesini alır

gösteri

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
Başka hiç kimse, bu en basit yol olduğunu merak ediyor ??
boşluk

.toISOString (), gün ışığından yararlanma ile düzgün çalışmıyor.
Joe'nun Fikirleri

2
@JoeDevmon: Bunun ne kadar alakalı olduğunu anlamıyorum. - (date.getTimezoneOffset() * 60000 )Bit, yaz saati etkisi dahil olmak üzere herhangi zaman dilimi farklılıkları, ortadan kaldırmak gerekir.
John Slegers

2
@JohnSlegers böyle düşünüyordum, ama o zaman bazı durumlarda hala bir gün alıyordum. Yeniden düzenledim ve örneğiniz şimdi çalışıyor. Tuhaf bir tarih dizesi falan olmalıydı. Ona sadık kaldığınız ve bunu gösterdiğin için teşekkürler. +1
Joe

2
Ben JS tarihler ve eller aşağı ile zaman dilimi sorunları ile başa çıkmak için en iyi yolu bulmak için SO ve diğer siteler arasında yüksek ve düşük aradım, bu çok kolay ve en iyisidir. Teşekkür ederim!
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)
    });
}

Sonuç:

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

1
Bu çözümün bu sorunun diğer cevaplarına verdiği ek esnekliği seviyorum. Bunu tam olarak test etmedim, ancak istediğim format için (yani "yyyy-AA-gg ss: dd: ss"), beklendiği gibi çalışıyor.
Porcus

3
Kolayca kaçınabilirsiniz eval.
Salman A

3
İşte eval ve yorum daha iyi bir sürüm jsfiddle.net/8904cmLd/2
m1m1k

2
Bu yanıttan yararlandım. Bu satırı eval ifadesiyle değiştirdimreturn ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
JesusIsMyDriver.dll

26

Bazı cevapların bir kombinasyonu:

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

Çözümü en iyi seviyorum - okunması kolay ve güvenmiyor toISOString()ve bu işlevi kullanarak potansiyel saat dilimi tuzakları.
matt.fc

bu beynimi incitmeyen ilk kişi.
ckapilla

22

Kitaplıkları kullanmaya karşı bir şeyiniz yoksa , Moments.js kitaplığını şu şekilde kullanabilirsiniz:

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>


Harika bir çözüm, ancak 300kb'lık bir paket
Adam

13

Sadece şunu kullanın:

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

Basit ve tatlı;)


4
dolgu, 2 harfli format için mevcut değildir. tarih veya ay 10'dan küçükse tek basamak gösterir, bu yüzden bunu doğrudan kullanamazsınız.
Yatender Singh

Evet ama bu sadece javascript kullanarak elde edilebilir, onun tamamen senin ihtiyacına kadar düşünüyorum, öyle değil mi? @YatenderSingh
Jain

4
evet doğru ama istediği "yyyy-aa-gg" biçiminde soru başlığını kontrol edin :)
Yatender Singh

var old_date = yeni Tarih (tarih); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitti Munirah Abdul Razak

1
Harika. Çalıştı ve basit ve özlü oldu!
Waleed93

12

toISOString()tarihinizin yerel saat olduğunu varsayar ve UTC'ye dönüştürür. Yanlış bir tarih dizesi alırsınız.

Aşağıdaki yöntem ihtiyacınız olanı döndürmelidir.

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]);
};

Kaynak: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


8

Yıl, ay ve günü alın ve bir araya getirin. Düz, basit ve doğru.

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

Sen kullanabilirsiniz toLocaleDateString('fr-CA')üzerinde Datenesne

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

Ayrıca bu yerel ayarların bu yerel ayarlar listesinden doğru sonuç verdiğini öğrendim Tüm Yerellerin Listesi ve Kısa Kodları?

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


Bunun neden işe yaradığına dair bir fikrin var mı? ISO biçimi yalnızca varsayılan mıdır, yoksa bu yerel ayarlar bu biçimi gerçekten kullanıyor mu? Eğer eskisi ise, gelecekte beklenmedik bir şekilde değişebileceğinden endişe ediyorum.
jymbob

Bu, tarayıcı dışındaki NodeJS ile çalışmıyor.
Donato

@jymbob Bu yerel ayarların gerçekten bu formatları kullandığını düşünüyorum. Aynı cevaba bu Wikipedia sayfasına bakarak da geldim: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă

5

Saat dilimini de dikkate almak için, bu tek astar herhangi bir kütüphane olmadan iyi olmalıdır:

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

5

Bunu deneyebilirsiniz: https://www.npmjs.com/package/timesolver

npm i timesolver

Kodunuzda kullanın:

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

Tarih dizesini şu yöntemi kullanarak alabilirsiniz:

getString

4

Bu cevapların hiçbiri beni tatmin etmedi. Herhangi bir harici kütüphane kullanmadan bana yerel saat diliminde gün veren bir platformlar arası çözüm istedim.

Ben geldi budur:

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

Bu tarih tarihini, YYYY-AA-GG biçiminde, saat dilimi içinde tarih başvurularına döndürmelidir.

Örneğin, UTC'de 24. sırada olmasına rağmen localDay(new Date("2017-08-24T03:29:22.099Z"))dönecektir "2017-08-23".

Sen gerekir polyfill Internet Explorer 8'de işe bunun için Date.prototype.toISOString, ancak başka her yerde desteklenmelidir.


Belki de sadece 2017-08-23 verecek olursak, ancak UTC'nin (ör. ABD'de) yeterince gerideyseniz.
Simon D

3

Her seferinde çoğaltmaya çalışmak yerine formatDate-js gibi bir şey kullanmanızı öneririm . Tüm önemli strftime eylemlerini destekleyen bir kütüphane kullanın.

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

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

veya

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]

Bunu dene!


Verileri UTC saat diliminde görüntüleyeceği için ikinci seçenek yanlış tarihi görüntüleyebilir.
Ever Dev

2

İşte bunu yapmanın bir yolu:

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 bunun için harika.

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

Önceki cevaplardan birkaçı iyiydi, ama çok esnek değildi. Daha fazla kenar durumu ele alabilecek bir şey istedim, bu yüzden @orangleliu'nun cevabını aldım ve genişlettim. 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;
}

Örnek kullanım:

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');

Güzel temiz ve yorumlu çözüm. Yine de, geçerli bir tarih olarak tanınmazsa, yeni bir tarihle sessizce değiştirilen ilk argüman hakkında şüpheliyim . Bu hata görünür yüzden ziyade, biçimi tanınmıyor durumunda (basit bir "Geçersiz tarih biçimi" dönen dize olabilir) yerine 2 argüman olarak bu "-Optionnal varsayılan değeri" koyun ve istisna çeşit döneceğini açıkça etmek test kullanıcısı / kullanıcı
Balmipour

1

Bu benim için geçerli tarihi istenen formatta (YYYYMMDD SS: AA: SS) almak için çalıştı:

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

Kütüphane gerekmez

Sadece saf JavaScript.

Aşağıdaki örnek, son iki ayı bugünden alır:

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))


Tehlikeli. Bu durumda saat dilimi sapmasını yok sayarsınız.
maxence51

1

PHP uyumlu tarih formatı

İşte PHP işlevi date()ile aynı parametreleri alıp JavaScript'te bir tarih / saat dizesi döndürebilen küçük bir işlev .

PHP'deki tüm date () biçimi seçeneklerinin desteklenmediğini unutmayın. partsEksik biçim belirtecini oluşturmak için nesneyi genişletebilirsiniz

/**
 * 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"

öz

İşte formatDate()fonksiyonun güncellenmiş bir versiyonu ve ek örnekler: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9


0

Cevapların bir başka kombinasyonu. Güzel okunabilir, ancak biraz uzun.

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

Tarihin tüm saat dilimlerinde aynı olması gerekiyorsa, örneğin veritabanındaki bir değeri temsil ediyorsa, günün, ayın UTC sürümlerini kullandığınızdan emin olun; bu, JavaScript tarih nesnesindeki UTC sürümleri ve belirli saat dilimlerinde tek tek hatalardan kaçının.

Daha da iyisi, bu tür biçimlendirme için Moment.js tarih kütüphanesini kullanın .


0

Ben modifiye Samit Satpute tepkisini şöyle:

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

Hashmap verilerinden biçimlendirme ve maksimum ve minimum tarihi bulma:

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));


Bunun soru ile nasıl bir ilişkisi var (tarih biçimlendirme)?
Peter Mortensen

0

Bir tarih dizesini yeniden biçimlendirmek oldukça basittir, ör.

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));

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.