Memformat tanggal JavaScript sebagai yyyy-mm-dd

382

Saya punya tanggal dengan format Sun May 11,2014. Bagaimana saya bisa mengubahnya menjadi 2014-05-11menggunakan JavaScript?

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

Kode di atas memberi saya format tanggal yang sama sun may 11,2014,. Bagaimana saya bisa memperbaikinya?

pengguna3625547
sumber
7
Saya ragu bahwa kode di atas memberi Anda apa pun selain kesalahan sintaksis.
plalx
Sangat mempertimbangkan untuk menggunakan perpustakaan seperti Moment.js. Ini akan memformat dalam hasil yang diinginkan :)
Ankur
5
Mengapa menggunakan perpustakaan ketika 5 baris kode dapat melakukan pekerjaan? @Ankur
Black Mamba
Terkait: Apa yang dimaksud dengan String Waktu Tanggal dalam JavaScript? Perhatikan bahwa "Minggu 11 Mei 2014" bukan string tanggal yang valid dan penguraiannya mungkin gagal di beberapa browser.
str

Jawaban:

524

Anda dapat melakukan:

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

Contoh penggunaan:

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

Keluaran:

2014-05-11

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

pengguna3470953
sumber
11
Benarkah banyak deklarasi variabel dalam pernyataan yang sama? stackoverflow.com/questions/694102/…
bhspencer
8
@ Fuser97381 Beberapa deklarasi variabel dalam pernyataan yang sama lebih dari sekedar preferensi gaya estetika. Ini adalah praktik yang berbahaya. Jika Anda secara tidak sengaja gagal menambahkan koma setelah setiap deklarasi Anda akhirnya membuat variabel global. Bukan sesuatu yang harus didorong pada apa yang mungkin menjadi jawaban kanonik untuk suatu pertanyaan.
bhspencer
6
'use strict';@ bhspencer
Vix
3
Memformat ulang string tanggal seharusnya tidak bergantung pada penguraian string non-standar yang berhasil oleh pengurai bawaan. Dengan format OP, itu dapat diformat ulang dalam kode yang lebih sedikit tanpa menggunakan Tanggal sama sekali.
RobG
Bagaimana cara meningkatkan 30 hari dalam rentang 1 ~ 31?
Steve Angello
456

Hanya memanfaatkan toISOStringmetode bawaan yang membawa tanggal Anda ke format ISO 8601:

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

Di mana YourDate adalah objek kencan Anda.

Sunting: beberapa pria menulis ini untuk menangani zona waktu di komentar:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]
Darth Egregious
sumber
239
HATI-HATI dengan metode ini karena pertama kali mengkonversi ke tanggal ke UTC. Jika Anda berada di zona waktu + dan porsi waktu Anda lebih awal di hari itu, maka itu bisa bergulir sehari. Atau, jika Anda berada di - zona waktu dan porsi waktu Anda terlambat, maka itu bisa bergulir sehari.
Luke Baulch
4
Coba ini sebagai gantinya: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] ini seharusnya bisa menyelesaikan masalah zona waktu
mjwrazor
5
now.toISOString().substring(0,10); Ini adalah alternatif yang lebih bersih, karena ini mengingatkan Anda bahwa YYYY-MM-DDsepuluh karakter pertama dari format iso lengkap
Gutimore
4
Catatan: menggunakan solusi bermanfaat yang dikomentari oleh @mjwrazor, saya harus mengurangi alih-alih menambahkan offset untuk mendapatkan tanggal yang benar (ubah + (offsetke a - (offset)
rococo
135

Saya menggunakan cara ini untuk mendapatkan tanggal dalam format yyyy-mm-dd :)

var todayDate = new Date().toISOString().slice(0,10);
Fernando Aguilar
sumber
14
Bagaimana Anda menangani pergantian tanggal satu hari seperti yang disebutkan di sini oleh @Luke_Baulch?
Malvineous
7
Anda dapat melakukan ini: var todayDate = Tanggal baru (); todayDate.setMinutes (todayDate.getMinutes () - todayDate.getTimezoneOffset ()); todayDate.toISOString (). slice (0,10); Ini seharusnya membantu menghindari masalah UTC.
Fernando Aguilar
1
@FernandoAguilar Tapi satu keraguan, bagaimana kita tahu kita perlu mengurangi offset atau menambahkannya?
whyAto8
var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);memberi saya "2018-03-25". Di sistem lain var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);memberi saya "2018-03-27".
Salman A
2
Tidak selalu berhasil. Terkadang mengurangi satu hari karena konversi UTC.
NickG
110

Cara paling sederhana untuk mengonversi tanggal Anda ke format tttt-bb-hh, adalah dengan melakukan ini:

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

Bagaimana itu bekerja:

  • new Date("Sun May 11,2014")mengonversi string "Sun May 11,2014"ke objek tanggal yang mewakili waktu Sun May 11 2014 00:00:00dalam zona waktu berdasarkan lokal saat ini (pengaturan sistem host)
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))mengonversi tanggal Anda menjadi objek tanggal yang sesuai dengan waktu Sun May 11 2014 00:00:00dalam UTC (waktu standar) dengan mengurangi offset zona waktu
  • .toISOString() mengonversi objek tanggal ke string ISO 8601 2014-05-11T00:00:00.000Z
  • .split("T") memisahkan string menjadi array ["2014-05-11", "00:00:00.000Z"]
  • [0] mengambil elemen pertama dari array itu

Demo

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
sumber
20
Tidak ada orang lain yang terkejut bahwa ini adalah cara paling sederhana ??
gap
.toISOString () tidak bekerja dengan benar dengan penghematan siang hari.
Ide Joe
2
@ JoDevmon: Saya tidak melihat bagaimana itu relevan di sini. The - (date.getTimezoneOffset() * 60000 )bit harus menghilangkan perbedaan zona waktu, termasuk dampak dari penghematan waktu siang hari.
John Slegers
2
@ JohnSlegers itulah yang saya pikirkan, tetapi kemudian saya masih mendapatkan hari sebelumnya dalam beberapa kasus. Saya refactored dan contoh Anda berfungsi sekarang. Saya pasti punya string tanggal yang aneh atau sesuatu. Terima kasih telah mematuhinya dan menunjukkannya. +1 👍
Joe's
2
Saya telah mencari tinggi dan rendah di seluruh SO dan situs lain untuk menemukan cara terbaik untuk menangani masalah zona waktu dengan tanggal di JS, dan secara langsung, ini adalah yang termudah dan terbaik. Terima kasih!
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)
    });
}

Hasil:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11
orangleliu
sumber
1
Saya suka fleksibilitas tambahan yang diberikan solusi ini daripada jawaban lain untuk pertanyaan ini. Saya belum benar-benar menguji ini, tetapi untuk format yang saya inginkan (yaitu "yyyy-MM-dd hh: mm: ss"), ia berfungsi seperti yang diharapkan.
porcus
3
Anda bisa dengan mudah menghindari eval.
Salman A
3
inilah versi yang menghindari evalids
m1m1k
2
Saya mendapat manfaat dari respons ini. Saya mengganti baris itu dengan pernyataan eval untukreturn ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
JesusIsMyDriver.dll
26

Kombinasi dari beberapa jawaban:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');
aqwsez
sumber
Saya suka solusinya yang terbaik - mudah dibaca, dan tidak bergantung pada toISOString()potensi jebakan zona waktu dengan menggunakan fungsi itu.
matt.fc
ini yang pertama yang tidak membuat otakku sakit.
ckapilla
22

Jika Anda tidak keberatan menggunakan pustaka, Anda bisa menggunakan pustaka Moments.js seperti:

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
sumber
Solusi keren, tetapi ini adalah paket 300kb
Adam
13

Cukup gunakan ini:

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

Sederhana dan manis;)

Pardeep Jain
sumber
4
padding tidak ada untuk format 2 huruf. itu akan menampilkan satu digit jika tanggal atau bulan kurang dari 10 itu sebabnya tidak dapat menggunakan ini secara langsung.
Yatender Singh
ya tapi itu bisa dicapai hanya dengan menggunakan javascript, itu benar-benar sesuai dengan kebutuhan Anda saya pikir begitu, bukan? @YatenderSingh
Pardeep Jain
4
ya benar tetapi periksa judul pertanyaan "yyyy-mm-dd" format yang dia inginkan :)
Yatender Singh
var old_date = Tanggal baru (tanggal); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitti Munirah Abdul Razak
1
Bagus. Itu bekerja dan sederhana dan ringkas!
Waleed93
12

toISOString()menganggap tanggal Anda adalah waktu setempat dan mengubahnya menjadi UTC. Anda akan mendapatkan string tanggal yang salah.

Metode berikut harus mengembalikan apa yang Anda butuhkan.

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

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

pengguna1920925
sumber
9

Ambil tahun, bulan, dan hari, lalu satukan. Lurus, sederhana, dan akurat.

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
sumber
9

Anda dapat menggunakan toLocaleDateString('fr-CA')pada Dateobjek

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

Saya juga menemukan bahwa lokal tersebut memberikan hasil yang benar dari daftar lokal ini. Daftar Semua Lokal dan Kode Pendeknya?

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

Aleksandr Belugin
sumber
Tahu alasannya ini berhasil? Apakah format ISO hanya default, atau apakah lokal ini benar-benar menggunakan format itu? Jika yang pertama saya khawatir bahwa itu bisa berubah tiba-tiba di masa depan.
jymbob
Ini tidak berfungsi dengan NodeJS di luar browser.
Donato
@ jymbob Saya pikir ini benar-benar menggunakan format lokal. Saya sampai pada jawaban yang sama dengan melihat halaman Wikipedia ini: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă
5

Untuk mempertimbangkan zona waktu juga, liner satu ini harus bagus tanpa pustaka:

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

Anda dapat mencoba ini: https://www.npmjs.com/package/timesolver

npm i timesolver

Gunakan dalam kode Anda:

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

Anda bisa mendapatkan string tanggal dengan menggunakan metode ini:

getString
sean1093
sumber
4

Tidak satu pun dari jawaban ini yang cukup memuaskan saya. Saya menginginkan solusi lintas platform yang memberi saya hari di zona waktu lokal tanpa menggunakan perpustakaan eksternal.

Inilah yang saya pikirkan:

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

Itu harus mengembalikan hari tanggal, dalam format YYYY-MM-DD, di zona waktu referensi tanggal.

Jadi misalnya, localDay(new Date("2017-08-24T03:29:22.099Z"))akan kembali "2017-08-23"meskipun sudah tanggal 24 di UTC.

Anda harus membuat polyfill Date.prototype.toISOString agar bisa berfungsi di Internet Explorer 8, tetapi harus didukung di tempat lain.

Erik Pukinskis
sumber
Mungkin perlu dicatat bahwa itu hanya akan memberi Anda 2017-08-23 jika Anda cukup di belakang UTC (misalnya di AS).
Simon D
3

Date.js sangat bagus untuk ini.

require("datejs")
(new Date()).toString("yyyy-MM-dd")
Tan Wang
sumber
3

Saya sarankan menggunakan sesuatu seperti formatDate-js daripada mencoba untuk mereplikasi setiap waktu. Cukup gunakan perpustakaan yang mendukung semua tindakan strftime utama.

new Date().format("%Y-%m-%d")
Michael Baldry
sumber
3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

atau

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]

Coba ini!

Williaan Lopes
sumber
Opsi kedua mungkin menampilkan tanggal yang salah karena akan menampilkan data dalam zona waktu UTC.
Pernah Dev
2

Inilah salah satu cara untuk melakukannya:

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

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

Beberapa jawaban sebelumnya baik-baik saja, tetapi tidak terlalu fleksibel. Saya menginginkan sesuatu yang benar-benar dapat menangani lebih banyak kasus tepi, jadi saya mengambil jawaban @orangleliu dan memperluasnya. 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;
}

Contoh penggunaan:

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
sumber
Solusi bersih & berkomentar bagus. Namun saya skeptis tentang argumen pertama, yang diam - diam diganti dengan tanggal baru yang baru jika tidak diakui sebagai tanggal yang valid. Saya lebih suka menempatkan "nilai default optionnal" ini sebagai argumen ke-2, dan mengembalikan beberapa jenis pengecualian (bisa berupa "format tanggal tidak valid" yang dikembalikan string) seandainya format tidak dikenali, sehingga kesalahan muncul dengan jelas untuk the tester / user
Balmipour
1

Ini berhasil bagi saya untuk mendapatkan tanggal saat ini dalam format yang diinginkan (YYYYMMDD HH: 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);
Getah
sumber
1

Tidak diperlukan perpustakaan

JavaScript murni.

Contoh di bawah ini mendapatkan dua bulan terakhir dari hari ini:

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
sumber
Berbahaya. Dalam hal ini Anda mengabaikan offset zona waktu.
maxence51
1

Format tanggal yang kompatibel dengan PHP

Berikut adalah fungsi kecil yang dapat mengambil parameter yang sama dengan fungsi PHP date()dan mengembalikan string tanggal / waktu dalam JavaScript.

Perhatikan bahwa tidak semua opsi format tanggal () dari PHP didukung. Anda dapat memperluas partsobjek untuk membuat token format yang hilang

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

Inti

Berikut adalah intisari dengan versi formatDate()fungsi yang diperbarui dan contoh tambahan: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9

Philipp
sumber
0

Kombinasi lain dari jawaban. Mudah dibaca, tapi agak panjang.

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
sumber
0

Jika tanggal harus sama di semua zona waktu, misalnya mewakili beberapa nilai dari basis data, maka pastikan untuk menggunakan versi UTC dari hari, bulan, fungsi mata-penuh pada objek tanggal JavaScript karena ini akan ditampilkan dalam waktu UTC dan menghindari kesalahan satu per satu di zona waktu tertentu.

Lebih baik lagi, gunakan perpustakaan tanggal Moment.js untuk pemformatan semacam ini.

GameSalutes
sumber
0

Saya memodifikasi respons Samit Satpute sebagai berikut:

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
sumber
0

Memformat dan menemukan tanggal maksimum dan minimum dari data hashmap:

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
sumber
Bagaimana ini terkait dengan pertanyaan (memformat tanggal)?
Peter Mortensen
0

Memformat ulang string tanggal cukup mudah, misalnya

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
sumber