Bagaimana saya mendapatkan Bulan dan Tanggal JavaScript dalam format 2 digit?


Jawaban:


812
("0" + this.getDate()).slice(-2)

untuk tanggal, dan yang serupa:

("0" + (this.getMonth() + 1)).slice(-2)

untuk bulan ini.


86
Keren, tapi: function addZ(n){return n<10? '0'+n:''+n;}sedikit lebih umum.
RobG

9
slice itu pintar, tetapi jauh lebih lambat daripada perbandingan sederhana: jsperf.com/slice-vs-comparison
dak

30
@ Dok: Dan kapan hal itu realistis? Saya ragu Anda menghitung bulan ribuan kali per detik.
Sasha Chedygov

2
@ KasperHoldum– getMonthdan getDatekembalikan angka, bukan string. Dan jika kompatibilitas dengan Strings diperlukan, maka '0' + Number(n)akan melakukan pekerjaan itu.
RobG

9
@Sasha Chedygov yakin Anda dapat menghitung bulan ribuan kali per detik, terutama jika Anda menyortir
Dexygen

87

Jika Anda menginginkan format seperti "YYYY-MM-DDTHH: mm: ss", ini mungkin lebih cepat:

var date = new Date().toISOString().substr(0, 19);
// toISOString() will give you YYYY-MM-DDTHH:mm:ss.sssZ

Atau format datetime MySQL yang umum digunakan "YYYY-MM-DD HH: mm: ss":

var date2 = new Date().toISOString().substr(0, 19).replace('T', ' ');

saya harap ini membantu


1
Ini adalah solusi tersest yang saya temui. Satu-satunya masalah di sini adalah masalah zona waktu.
Praym

3
Offset zona waktu dapat diatasi dengan sesuatu seperti: var date = Tanggal baru (Tanggal baru (). GetTime () - Tanggal baru (). GetTimezoneOffset () * 60 * 1000) .toISOString (). Substr (0,19) .replace ('T', '');
Praym

Berdoa, kode Anda berfungsi untuk saya, tetapi salin dan tempel pasti memiliki beberapa karakter tersembunyi atau sesuatu, jadi saya cukup mengetiknya saja.
spacebread

Saya akhirnya pada pertanyaan ini mencoba untuk menyelesaikan masalah yang tepat ini sehingga, ternyata, jawaban Anda adalah apa yang saya butuhkan.
Engineer Toast

Perhatikan bahwa metode ini akan mengembalikan tanggal dan waktu sesuai dengan zona waktu UTC.
Amr

41

Contoh untuk bulan:

function getMonth(date) {
  var month = date.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}  

Anda juga dapat memperluas Dateobjek dengan fungsi seperti ini:

Date.prototype.getMonthFormatted = function() {
  var month = this.getMonth() + 1;
  return month < 10 ? '0' + month : '' + month; // ('' + month) for string result
}

4
Perhatikan bahwa getMonth mengembalikan angka antara 0 dan 11, bukan 1 dan 12.
Salman A

4
Ini mengembalikan hasil yang tidak konsisten. Untuk bulan November dan Desember ia mengembalikan sebuah string dan untuk bulan-bulan lainnya mengembalikan sebuah angka.
Tim Down

Saya memperbarui kode untuk mengimplementasikan Salman. Sebuah peringatan bahwa getMonth berbasis nol, bukan 1. Dan menambahkan tanda kutip untuk memastikan string selalu dikembalikan.
Jan Derk

23

Cara terbaik untuk melakukan ini adalah membuat pemformat sederhana Anda sendiri (seperti di bawah ini):

getDate()mengembalikan hari dalam sebulan (dari 1-31)
getMonth()mengembalikan bulan (dari 0-11) < berbasis nol, 0 = Januari, 11 = Desember
getFullYear() mengembalikan tahun (empat digit) < tidak menggunakangetYear()

function formatDateToString(date){
   // 01, 02, 03, ... 29, 30, 31
   var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
   // 01, 02, 03, ... 10, 11, 12
   var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
   // 1970, 1971, ... 2015, 2016, ...
   var yyyy = date.getFullYear();

   // create the format you want
   return (dd + "-" + MM + "-" + yyyy);
}

20

Kenapa tidak digunakan padStart?

var dt = new Date();

year  = dt.getYear() + 1900;
month = (dt.getMonth() + 1).toString().padStart(2, "0");
day   = dt.getDate().toString().padStart(2, "0");

console.log(year + '/' + month + '/' + day);

Ini akan selalu mengembalikan angka 2 digit bahkan jika bulan atau hari kurang dari 10.

Catatan:

  • Ini hanya akan bekerja dengan Internet Explorer jika kode js ditranslasikan menggunakan babel .
  • getYear()mengembalikan tahun dari tahun 1900 dan tidak memerlukan padStart.
  • getMonth() mengembalikan bulan dari 0 hingga 11.
    • 1 ditambahkan ke bulan sebelum padding untuk mempertahankannya 1 hingga 12
  • getDate() mengembalikan hari dari 1 hingga 31.
    • hari ke 7 akan kembali 07dan jadi kita tidak perlu menambahkan 1 sebelum mengisi string.

1
Ya. Itu termasuk dalam tautan MDN di atas. Jika Anda menggunakan babel untuk memindahkan, Anda seharusnya tidak memiliki masalah.
SomeGuyOnAComputer

10

Berikut ini digunakan untuk mengkonversi format tanggal db2 yaitu YYYY-MM-DD menggunakan operator ternary

var currentDate = new Date();
var twoDigitMonth=((currentDate.getMonth()+1)>=10)? (currentDate.getMonth()+1) : '0' + (currentDate.getMonth()+1);  
var twoDigitDate=((currentDate.getDate())>=10)? (currentDate.getDate()) : '0' + (currentDate.getDate());
var createdDateTo = currentDate.getFullYear() + "-" + twoDigitMonth + "-" + twoDigitDate; 
alert(createdDateTo);

7

Saya akan melakukan ini:

var d = new Date('January 13, 2000');
var s = d.toLocaleDateString('en-US', { month: '2-digit', day: '2-digit', year: 'numeric' });
console.log(s); // prints 01/13/2000


6
function monthFormated(date) {
   //If date is not passed, get current date
   if(!date)
     date = new Date();

     month = date.getMonth();

    // if month 2 digits (9+1 = 10) don't add 0 in front 
    return month < 9 ? "0" + (month+1) : month+1;
}

6

Contoh lainnya, hampir satu liner.

var date = new Date();
console.log( (date.getMonth() < 9 ? '0': '') + (date.getMonth()+1) );


5
function monthFormated() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}

5

Jika mungkin ada waktu luang yang saya cari:

YYYYMMDD

untuk hari ini, dan bergaul dengan:

const dateDocumentID = new Date()
  .toISOString()
  .substr(0, 10)
  .replace(/-/g, '');

2
Jawabannya rapi. Karena DD/MM/YY, saya pergi kenew Date().toISOString().substr(0, 10).split('-').reverse().map(x => x.substr(0, 2)).join('/')
Max Ma

4

Ini solusi saya:

function leadingZero(value) {
  if (value < 10) {
    return "0" + value.toString();
  }
  return value.toString();
}

var targetDate = new Date();
targetDate.setDate(targetDate.getDate());
var dd = targetDate.getDate();
var mm = targetDate.getMonth() + 1;
var yyyy = targetDate.getFullYear();
var dateCurrent = leadingZero(mm) + "/" + leadingZero(dd) + "/" + yyyy;


3

Bukan jawaban tetapi di sini adalah bagaimana saya mendapatkan format tanggal yang saya butuhkan dalam suatu variabel

function setDateZero(date){
  return date < 10 ? '0' + date : date;
}

var curr_date = ev.date.getDate();
var curr_month = ev.date.getMonth() + 1;
var curr_year = ev.date.getFullYear();
var thisDate = curr_year+"-"+setDateZero(curr_month)+"-"+setDateZero(curr_date);

Semoga ini membantu!


2

Kiat dari MDN :

function date_locale(thisDate, locale) {
  if (locale == undefined)
    locale = 'fr-FR';
  // set your default country above (yes, I'm french !)
  // then the default format is "dd/mm/YYY"

  if (thisDate == undefined) {
    var d = new Date();
  } else {
    var d = new Date(thisDate);
  }
  return d.toLocaleDateString(locale);
}

var thisDate = date_locale();
var dayN = thisDate.slice(0, 2);
var monthN = thisDate.slice(3, 5);
console.log(dayN);
console.log(monthN);

http://jsfiddle.net/v4qcf5x6/


2

new Date().getMonth() metode mengembalikan bulan sebagai angka (0-11)

Anda dapat dengan mudah memperbaiki nomor bulan dengan fungsi ini.

function monthFormatted() {
  var date = new Date(),
      month = date.getMonth();
  return month+1 < 10 ? ("0" + month) : month;
}

1
function GetDateAndTime(dt) {
  var arr = new Array(dt.getDate(), dt.getMonth(), dt.getFullYear(),dt.getHours(),dt.getMinutes(),dt.getSeconds());

  for(var i=0;i<arr.length;i++) {
    if(arr[i].toString().length == 1) arr[i] = "0" + arr[i];
  }

  return arr[0] + "." + arr[1] + "." + arr[2] + " " + arr[3] + ":" + arr[4] + ":" + arr[5]; 
}

1

Dan versi lain di sini https://jsfiddle.net/ivos/zcLxo8oy/1/ , semoga bermanfaat.

var dt = new Date(2016,5,1); // just for the test
var separator = '.';
var strDate = (dt.getFullYear() + separator + (dt.getMonth() + 1) + separator + dt.getDate());
// end of setup

strDate = strDate.replace(/(\b\d{1}\b)/g, "0$1")

1

Jawaban di sini sangat membantu, namun saya membutuhkan lebih dari itu: tidak hanya bulan, tanggal, bulan, jam & detik, untuk nama default.

Menariknya, meskipun kata "0" diperlukan untuk semua hal di atas, "+1" diperlukan hanya untuk bulan, bukan yang lain.

Sebagai contoh:

("0" + (d.getMonth() + 1)).slice(-2)     // Note: +1 is needed
("0" + (d.getHours())).slice(-2)         // Note: +1 is not needed

0

Solusi saya:

function addLeadingChars(string, nrOfChars, leadingChar) {
    string = string + '';
    return Array(Math.max(0, (nrOfChars || 2) - string.length + 1)).join(leadingChar || '0') + string;
}

Pemakaian:

var
    date = new Date(),
    month = addLeadingChars(date.getMonth() + 1),
    day = addLeadingChars(date.getDate());

jsfiddle: http://jsfiddle.net/8xy4Q/1/


0
var net = require('net')

function zeroFill(i) {
  return (i < 10 ? '0' : '') + i
}

function now () {
  var d = new Date()
  return d.getFullYear() + '-'
    + zeroFill(d.getMonth() + 1) + '-'
    + zeroFill(d.getDate()) + ' '
    + zeroFill(d.getHours()) + ':'
    + zeroFill(d.getMinutes())
}

var server = net.createServer(function (socket) {
  socket.end(now() + '\n')
})

server.listen(Number(process.argv[2]))

0

jika Anda ingin fungsi getDate () mengembalikan tanggal sebagai 01 alih-alih 1, inilah kodenya .... Mari kita asumsikan tanggal hari ini adalah 01-11-2018

var today = new Date();
today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + today.getDate();      
console.log(today);       //Output: 2018-11-1


today = today.getFullYear()+ "-" + (today.getMonth() + 1) + "-" + ((today.getDate() < 10 ? '0' : '') + today.getDate());
console.log(today);        //Output: 2018-11-01

0

Saya ingin melakukan sesuatu seperti ini dan inilah yang saya lakukan

ps saya tahu ada jawaban yang tepat di atas, tetapi hanya ingin menambahkan sesuatu sendiri di sini

const todayIs = async () =>{
    const now = new Date();
    var today = now.getFullYear()+'-';
    if(now.getMonth() < 10)
        today += '0'+now.getMonth()+'-';
    else
        today += now.getMonth()+'-';
    if(now.getDay() < 10)
        today += '0'+now.getDay();
    else
        today += now.getDay();
    return today;
}

terlalu banyak usaha. Bukan?
ahmednawazbutt

0

Jika Anda mengecek lebih kecil dari 10 , Anda belum harus membuat fungsi baru untuk itu. Cukup tetapkan variabel ke dalam tanda kurung dan kembalikan dengan operator ternary.

(m = new Date().getMonth() + 1) < 10 ? `0${m}` : `${m}`

0
currentDate(){
        var today = new Date();
        var dateTime =  today.getFullYear()+'-'+
                        ((today.getMonth()+1)<10?("0"+(today.getMonth()+1)):(today.getMonth()+1))+'-'+
                        (today.getDate()<10?("0"+today.getDate()):today.getDate())+'T'+
                        (today.getHours()<10?("0"+today.getHours()):today.getHours())+ ":" +
                        (today.getMinutes()<10?("0"+today.getMinutes()):today.getMinutes())+ ":" +
                        (today.getSeconds()<10?("0"+today.getSeconds()):today.getSeconds());        
            return dateTime;
},

0

Saya sarankan Anda menggunakan perpustakaan berbeda yang disebut Moment https://momentjs.com/

Dengan cara ini Anda dapat memformat tanggal secara langsung tanpa harus melakukan pekerjaan ekstra

const date = moment().format('YYYY-MM-DD')
// date: '2020-01-04'

Pastikan Anda mengimpor momen juga untuk dapat menggunakannya.

yarn add moment 
# to add the dependency
import moment from 'moment' 
// import this at the top of the file you want to use it in

Semoga ini bisa membantu: D


1
Moment.js telah disarankan; tetapi saran Anda masih lengkap dan bermanfaat.
iND

0
$("body").delegate("select[name='package_title']", "change", function() {

    var price = $(this).find(':selected').attr('data-price');
    var dadaday = $(this).find(':selected').attr('data-days');
    var today = new Date();
    var endDate = new Date();
    endDate.setDate(today.getDate()+parseInt(dadaday));
    var day = ("0" + endDate.getDate()).slice(-2)
    var month = ("0" + (endDate.getMonth() + 1)).slice(-2)
    var year = endDate.getFullYear();

    var someFormattedDate = year+'-'+month+'-'+day;

    $('#price_id').val(price);
    $('#date_id').val(someFormattedDate);
});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.