Pertanyaan Cara memformat tanggal JavaScript


Bagaimana saya bisa memformat objek tanggal JavaScript untuk dicetak sebagai 10-Aug-2010?


1257
2017-08-23 23:28


asal


Jawaban:


Perhatian: Ada jawaban yang lebih baik di bawah ini. Jawaban ini ditulis pada tahun 2010 dan solusi yang lebih baru dan lebih baik telah tiba sejak. OP harus menerima jawaban lain.

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

Anda dapat mengedit larik monthNames untuk menggunakan Jan, Feb, Mar, dll.


864
2017-08-23 23:35



Menggunakan toLocaleDateString();

Itu toLocaleDateString() metode mengembalikan string dengan representasi bahasa-sensitif dari bagian tanggal tanggal. Argumen locales dan options memungkinkan aplikasi menentukan bahasa yang harus digunakan oleh konvensi pemformatan dan memungkinkan untuk menyesuaikan perilaku fungsi.

Nilai yang dapat Anda berikan dalam opsi untuk kunci yang berbeda:

  1. hari: 
    Representasi hari ini.
    Nilai yang memungkinkan adalah "numerik", "2-digit".
  2. hari kerja: 
    Representasi hari kerja.
    Nilai yang mungkin adalah "sempit", "pendek", "panjang".
  3. tahun: 
    Representasi tahun ini.
    Nilai yang memungkinkan adalah "numerik", "2-digit".
  4. bulan: 
    Representasi bulan ini.
    Nilai yang mungkin adalah "numerik", "2-digit", "sempit", "pendek", "panjang".
  5. jam: 
    Representasi jam.
    Nilai yang memungkinkan adalah "numerik", "2-digit".
  6. menit: Representasi menit.
     Nilai yang memungkinkan adalah "numerik", "2-digit".
  7. kedua: 
    Representasi yang kedua.
    Nilai yang memungkinkan adalah "numerik", 2-digit ".

Semua kunci ini bersifat opsional. Anda dapat mengubah jumlah nilai opsi berdasarkan kebutuhan Anda, dan ini juga akan mencerminkan keberadaan setiap jangka waktu tanggal.

Catatan: Jika Anda hanya ingin mengonfigurasi opsi konten, namun tetap gunakan lokal saat ini, lewat null untuk parameter pertama akan menyebabkan kesalahan. Menggunakan undefined sebagai gantinya.

Untuk bahasa yang berbeda:

  1. "en-US": Untuk Bahasa Inggris
  2. "hi-IN": Untuk bahasa Hindi
  3. "ja-JP": Untuk Jepang

Anda dapat menggunakan lebih banyak opsi bahasa.

Sebagai contoh

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016

Anda juga bisa menggunakan toLocaleString() metode untuk tujuan yang sama. Satu-satunya perbedaan adalah fungsi ini menyediakan waktu ketika Anda tidak melewatkan opsi apa pun.

// Example
9/17/2016, 1:21:34 PM

Referensi:


766
2017-12-01 08:11



Menggunakan perpustakaan date.format:

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

kembali:

Saturday, June 9th, 2007, 5:46:21 PM 

format tanggal pada npm

http://jsfiddle.net/phZr7/1/


523
2017-08-23 23:35



Jika Anda perlu cepat memformat tanggal Anda menggunakan JavaScript biasa, gunakan getDate, getMonth + 1, getFullYear, getHours dan getMinutes:

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

Atau, jika Anda membutuhkannya untuk diisi dengan nol:

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50

326
2018-05-16 07:02



Nah, yang saya inginkan adalah mengubah tanggal hari ini menjadi a MySQL string tanggal ramah seperti 2012-06-23, dan menggunakan string itu sebagai parameter di salah satu pertanyaan saya. Solusi sederhana yang saya temukan adalah ini:

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

Perlu diingat bahwa solusi di atas tidak tidak Mempertimbangkan offset zona waktu Anda.

Anda mungkin mempertimbangkan menggunakan fungsi ini sebagai gantinya:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

Ini akan memberi Anda tanggal yang benar jika Anda mengeksekusi kode ini sekitar awal / akhir hari.


301
2018-06-23 18:49



Jika Anda sudah menggunakan jQuery UI dalam proyek Anda, Anda dapat melakukannya dengan cara ini:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

Beberapa opsi format tanggal datepicker untuk dimainkan tersedia sini.


157
2017-07-09 13:52



Saya pikir Anda bisa menggunakan tidak standar Metode tanggal toLocaleFormat(formatString)

formatString: String format dalam format yang sama yang diharapkan oleh strftime() fungsi dalam C.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

Referensi:


112
2017-12-30 05:33



Fungsi pemformatan khusus:

Untuk format tetap, fungsi sederhana membuat pekerjaan. Contoh berikut menghasilkan format internasional YYYY-MM-DD:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Format OP dapat dihasilkan seperti:

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Catatan: Namun, biasanya bukan ide yang baik untuk memperluas pustaka standar JavaScript (misalnya dengan menambahkan fungsi ini ke prototipe Tanggal).

Fungsi yang lebih maju dapat menghasilkan output yang dapat dikonfigurasi berdasarkan parameter format.

Jika untuk menulis fungsi pemformatan terlalu panjang, ada banyak pustaka di sekitar yang melakukannya. Beberapa jawaban lain sudah menyebutkannya. Tetapi meningkatkan ketergantungan juga memiliki hal yang berlawanan.

Fungsi pemformatan ECMAScript standar:

Karena versi ECMAScript yang lebih baru, maka Date kelas memiliki beberapa fungsi pemformatan spesifik:

toDateString: Implementasi bergantung, hanya tampilkan tanggal.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString: Tampilkan tanggal dan waktu ISO 8601.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

toJSON: Stringifier untuk JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString: Pelaksanaan tergantung, tanggal dalam format lokal.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocatatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString: Implementasi tergantung, tanggal & waktu dalam format lokal.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString: Implementasi tergantung, waktu dalam format lokal.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

toString: ToString Generik untuk Tanggal.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Catatan: dimungkinkan untuk menghasilkan keluaran kustom dari pemformatan tersebut>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

Contoh cuplikan:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));


109
2018-04-12 09:09



Plain JavaScript adalah pilihan terbaik untuk onetimer kecil.

Di sisi lain, jika Anda membutuhkan lebih banyak barang tanggal, MomentJS adalah solusi yang bagus.

Sebagai contoh:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

88
2017-12-24 10:15



Di browser modern (*), Anda bisa melakukan ini:

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

Output jika dilaksanakan hari ini (24 Januari 2016):

'24-Jan-2016'

(*)  Menurut MDN, "browser modern" berarti Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ & Safari bangun malam.


80
2018-01-24 21:09