JavaScript'te geçerli tarihi nasıl edinebilirim?
new Date()
geçerli tarihi değil , geçerli saati döndürür . Ayrımı, zaman bileşeni olmayan başka bir tarihle karşılaştırmaya çalışıyorsanız (yani, gece yarısı) önemlidir.
JavaScript'te geçerli tarihi nasıl edinebilirim?
new Date()
geçerli tarihi değil , geçerli saati döndürür . Ayrımı, zaman bileşeni olmayan başka bir tarihle karşılaştırmaya çalışıyorsanız (yani, gece yarısı) önemlidir.
Yanıtlar:
Geçerli tarih ve saati içeren new Date()
yeni bir Date
nesne oluşturmak için kullanın .
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
document.write(today);
Bu size günün tarihini aa / gg / yyyy biçiminde verecektir.
today = mm +'/'+ dd +'/'+ yyyy;
İstediğiniz biçime kolayca geçebilirsiniz.
01
, 02
, ...,09
Date.prototype.toLocaleDateString()
yöntem daha esnek bir çözümdür. ECMAScript 5.1'den beri JavaScript'in bir parçasıdır ve her daim yeşil tarayıcılar tarafından iyi desteklenmektedir. MDN:toLocaleDateString()
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Değişkeni replace
yeniden kullanacaksanız utc
, örneğin new Date(utc)
Firefox ve Safari, tire içeren bir tarihi tanımadığı için bu seçeneği kullanın .
toUTCString()
utc datetime olarak döner.
moment( new Date().toJSON().slice(0, 10) )
GÜNCELLENMİŞ! , Aşağı kaydır
Son kullanıcı için basit bir şey istiyorsanız ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.
var objToday = new Date(),
weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
dayOfWeek = weekday[objToday.getDay()],
domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
curMonth = months[objToday.getMonth()],
curYear = objToday.getFullYear(),
curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;
document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>
UBBER GÜNCELLEME Çok fazla ertelemeden sonra, sonunda GitHubbed'i kendim için kullandığım son çözümle güncelledim. Daha tatlı hale getirmek için bazı son dakika düzenlemeleri bile vardı! Eski jsFiddle'ı arıyorsanız , lütfen buna bakın .
Bu güncelleme , yukarıdaki yanıtım kadar küçük olmasa da, hala nispeten küçük olan 2 çeşittir, orijinal cevap. Son derece küçük istiyorsanız, bununla devam edin.
Ayrıca Not: Bu hala moment.js'den daha az şişirilir. Moment.js güzel olsa da, imo, öğrenme anını bir dilmiş gibi gerektiren çok fazla laik yöntem içeriyor. Burada benimki PHP: date ile aynı ortak formatı kullanıyor .
Lezzet 1
new Date().format(String)
Benim Kişisel Fav. Tabu biliyorum ama Date Object üzerinde harika çalışıyor. Date Object için gerekli olabilecek diğer modların farkında olmanız yeterlidir.
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Lezzet 2
dateFormat(Date, String)
Daha geleneksel hepsi bir arada yöntem. Bir öncekinin tüm yeteneğine sahiptir, ancak Date parametresi ile yöntemle çağrılır.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Lezzet (jQuery gerektirir)
$.date(Date, String)
Bu, basit birformat
seçenekten çok daha fazlasını içerir . Temel Date nesnesini genişletir ve gibi yöntemler içeriraddDays
. Daha fazla bilgi için lütfen Git'e bakın .
Bu modda, biçim karakterleri PHP: date'den esinlenmiştir . Tam liste için lütfen README'mi inceleyin
Bu mod ayrıca önceden hazırlanmış formatların çok daha uzun bir listesine sahiptir. Önceden hazırlanmış bir format kullanmak için anahtar adını girmeniz yeterlidir.dateFormat(new Date(), 'pretty-a');
Fark edebileceğiniz gibi, \
bir karakterden kaçmak için çift kullanabilirsiniz .
Mümkün olan en kısa.
"2018-08-03" gibi bir format almak için:
let today = new Date().toISOString().slice(0, 10)
console.log(today)
"8/3/2018" gibi bir biçim almak için:
let today = new Date().toLocaleDateString()
console.log(today)
Ayrıca, yerel ayarı bağımsız değişken olarak toLocaleDateString("sr")
, vb. Geçirebilirsiniz .
Zaman bilgisi olmayan bir tarih istiyorsanız, şunu kullanın:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
Bunu dene:
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")
Sonuç şöyle olacak
15/2/2012
Tarih biçimleri üzerinde çok daha ayrıntılı bir denetim arıyorsanız, momentjs'e göz atmanızı tavsiye ederim. Müthiş kütüphane - ve sadece 5KB. http://momentjs.com/
Moment.js'yi kullanabilirsiniz: http://momentjs.com/
var m = moment().format("DD/MM/YYYY");
document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
moment().format("L")
geçerli yerel ayara saygı duymak.
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Adımlara ayırmak için:
(new Date()).toString()
"Cum 28 Haziran 2013 15:30:18 GMT-0700 (PDT)"
(new Date()).toString().split(' ')
yukarıdaki dizeyi her boşlukta böler ve aşağıdaki gibi bir dizi döndürür: ["Cum", "Haz", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]
(new Date()).toString().split(' ').splice(1,3).join(' ')
yukarıdaki diziden ikinci, üçüncü ve dördüncü değerleri alır, boşluklarla birleştirir ve "28 Haziran 2013" dizesini döndürür
Date().split(' ').splice(1,3).join(' ')
Bu her seferinde işe yarar:
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear() + "-" + (month) + "-" + (day);
console.log(today);
var date = new Date().toLocaleDateString("en-US");
Ayrıca, yöntemi toLocaleDateString
iki parametre ile çağırabilirsiniz :
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
MSDN ile ilgili makale . MDN'de bu yöntem hakkında daha fazla bilgi .
new Date().toLocaleDateString("de-de")
benim için hile yapar.
Daha temiz, daha basit sürüm:
new Date().toLocaleString();
Sonuç , değişir kullanıcının göre yerel ayarı :
27.02.2017, 09:15:41
YYYY-AA-GG biçiminden memnunsanız, bu işi de yapar.
new Date().toISOString().split('T')[0]
2018-03-10
Date nesnesini genişleten Date.js kütüphanesini kullanabilirsiniz , böylece .today () yöntemine sahip olabilirsiniz.
Şu anki tarihi şu şekilde statik yöntemle çağırabilirsiniz:
var now = Date.now()
referans:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
var dtToday = new Date(date.now);
Varun'un cevabı TimezoneOffset'i hesaba katmıyor . İşte bunu yapan bir sürüm:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
TimezoneOffset
Tarih yapıcı milisaniye tarafından böylece çarpma alırken, dakikadır 60000
.
En Kısa Cevap: new Date().toJSON().slice(0,10)
new Date().toDateString();
Sonuç:
"Çar 03 Şub 2016"
As toISOString()
yalnızca geçerli UTC zamanı değil, yerel saati dönecektir. Biz de tarihi almak için '.ToString ()' fonksiyonunu kullanarak bir tarih yapmak zorunda yyyy-MM-dd
gibi formatında
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);
Tarih ve saati yyyy-MM-ddTHH:mm:ss
formatta almak için
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);
Tarih ve saati yyyy-MM-dd HH:mm:ss
formatta almak için
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
Basit bir DD/MM/YYYY
biçim istiyorsanız , eksik sıfırları önek eklemese de, bu basit çözümü buldum.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toISOString().slice(0,10);
bende çalışır
SON DÜZENLEME: 8/23/19 tarih-FNS kütüphane çok gibi çalışır moment.js ama YOL az alan kaplar. Projenize dahil etmek istediğiniz işlevleri seçmenize izin verir, böylece bugünün tarihini biçimlendirmek için tüm kütüphaneyi derlemenize gerek kalmaz. En az 3. parti bir lib projeniz için bir seçenek değilse, Samuel Meddows tarafından kabul edilen çözümü en üst düzeyde onaylıyorum.
Aşağıdaki tarihi korumak birkaç kişiye yardımcı oldu çünkü. Ancak kayıt için, bu yayındaki çözümlerin çoğu gibi, uyarı vermeden kırılmaya ve kırılmaya eğilimli
EDIT 2/7/2017 Tek satırlı bir JS çözümü:
tl; dr
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
edge, ff latest ve krom dönüşütodaysDate = "2/7/2017"
IE10 + 'da "çalışıyor" *
açıklama
IE10 ve IE Edge'in biraz farklı şeyler yaptığını öğrendim. ile new Date(Date.now()).toLocaleString()
olduğu gibi giriş,
IE10 şunu döndürür:
"Tuesday, February 07, 2017 2:58:25 PM"
Büyük bir uzun fonksiyon ve FTFY yazabilirim. Ama gerçekten bu şeyler için moment.js kullanmalısınız . Benim senaryom sadece bunu temizler ve genişletilmiş geleneksel ABD gösterimi verir:> todaysDate = "March 06, 2017"
IE EDGE şunu döndürür:
"2/7/2017 2:59:27 PM"
Elbette bu o kadar kolay olamazdı. Edge'in tarih dizesi, görünür her biri arasında görünmez "•" karakterlere sahiptir. Yani şimdi sadece ilk karakterin bir sayı olup olmadığını değil, ilk 3 karakterini de kontrol edeceğiz, çünkü tüm tarih aralığındaki herhangi bir karakterin sonunda bir noktada bir nokta veya eğik çizgi olacağı ortaya çıkıyor. Yani işler basit, sadece tutmaya .slice () ilk üç karakter (gelecek maskaralık karşı küçücük tampon) ve daha sonra sayıları kontrol edin. Muhtemelen bu görünmez noktaların kodunuzda kalıcı olarak kalabileceği unutulmamalıdır. Belki de bu dizeyi kendi görünümünüze basmaktan daha büyük planlarınız varsa, bunu araştırırdım.
∴ güncellenmiş bir astar:
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
Okumak berbat. Nasıl olur:
var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
ORİJİNAL CEVAP
Senin için bir astar var:
new Date(Date.now()).toLocaleString().split(', ')[0];
ve [1]
size günün saatini verecek.
Bunu kullanabilirsiniz
<script>
function my_curr_date() {
var currentDate = new Date()
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var my_date = month+"-"+day+"-"+year;
document.getElementById("dateField").value=my_date;
}
</script>
HTML
<body onload='return my_curr_date();'>
<input type='text' name='dateField' id='dateField' value='' />
</body>
JQuery kullanıyorsanız. Bu tek astarı deneyin:
$.datepicker.formatDate('dd/mm/yy', new Date());
İşte tarihi biçimlendirme kuralı
İşte jQuery tarih seçici referansı
Bunu çekmenin hızlı bir yolu (mevcut saat diliminizi dikkate alırken ISO yyyy-aa-gg biçiminden yararlanır):
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Genellikle, bu çok amaçlı uyumlu bir tarih biçimidir ve gerekirse saf tarih değerine dönüştürebilirsiniz:
Date.parse(d); // 1582044297000
Buradaki en önemli şey nedir .. Bunu yapmanın en temiz yolu
var currentDate=new Date().toLocaleString().slice(0,10);
3/4/2018,
kullanmak daha iyi olur new Date().toJSON().slice(0,10)
.
.slice(0,10)
Bu size yardımcı olabilir
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Bu, geçerli tarihi gg / aa / yyyy biçiminde yazdırır
Bu biçimlendirilmiş tarihi almak için iyidir
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
Bence bu eski bir soru ama en kolay yol şu olurdu:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Bu, geçerli saati alır, konuma göre bir dizeye iletir ve sonra saati görüntülemek için CurrentTime işlevini çağırabilirsiniz. Bu, bana göre, bir şey için zaman damgası almanın en etkili yolu olurdu.
var currentTime = new Date();