Làm cách nào để có được ngày hiện tại trong JavaScript?
new Date()
trả về dòng thời gian , không phải là hiện nay . Sự khác biệt quan trọng nếu bạn đang cố so sánh nó với một ngày khác không có thành phần thời gian (tức là vào lúc nửa đêm).
Làm cách nào để có được ngày hiện tại trong JavaScript?
new Date()
trả về dòng thời gian , không phải là hiện nay . Sự khác biệt quan trọng nếu bạn đang cố so sánh nó với một ngày khác không có thành phần thời gian (tức là vào lúc nửa đêm).
Câu trả lời:
Sử dụng new Date()
để tạo một Date
đối tượng mới chứa ngày và giờ hiện tại.
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);
Điều này sẽ cung cấp cho bạn ngày hôm nay ở định dạng mm / dd / yyyy.
Đơn giản chỉ cần thay đổi today = mm +'/'+ dd +'/'+ yyyy;
bất kỳ định dạng nào bạn muốn.
01
, 02
, ...,09
Date.prototype.toLocaleDateString()
Phương pháp mới là một giải pháp linh hoạt hơn. Đây là một phần của JavaScript kể từ ECMAScript 5.1 và được các trình duyệt thường xanh hỗ trợ tốt. MDN:toLocaleDateString()
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Sử dụng replace
tùy chọn nếu bạn sẽ sử dụng lại utc
biến, chẳng hạn new Date(utc)
như Firefox và Safari không nhận ra ngày có dấu gạch ngang.
toUTCString()
trả về dưới dạng utc datetime.
moment( new Date().toJSON().slice(0, 10) )
CẬP NHẬT! , Cuộn xuống
Nếu bạn muốn một cái gì đó đơn giản, đẹp mắt cho người dùng cuối ... 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>
CẬP NHẬT UBBER Sau nhiều lần chần chừ, cuối cùng tôi cũng đã GitHubbed và cập nhật điều này với giải pháp cuối cùng tôi đã sử dụng cho chính mình. Nó thậm chí còn có một số chỉnh sửa vào phút cuối để làm cho nó ngọt ngào hơn! Nếu bạn đang tìm kiếm jsFiddle cũ , xin vui lòng xem điều này .
Bản cập nhật này có 2 hương vị, vẫn tương đối nhỏ, mặc dù không nhỏ như câu trả lời ban đầu của tôi. Nếu bạn muốn cực kỳ nhỏ, hãy đi với điều đó.
Cũng lưu ý: Điều này vẫn ít cồng kềnh hơn khoảnh khắc.js. Mặc dù Moment.js rất hay, nhưng nó có quá nhiều phương thức thế tục, đòi hỏi thời điểm học như thể đó là một ngôn ngữ. Của tôi ở đây sử dụng định dạng phổ biến giống như PHP: date .
Hương vị 1
new Date().format(String)
Fav cá nhân của tôi. Tôi biết điều cấm kỵ nhưng hoạt động tuyệt vời trên Đối tượng ngày. Chỉ cần lưu ý đến bất kỳ mod nào khác mà bạn có thể có đối tượng Date.
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Hương vị 2
dateFormat(Date, String)
Phương pháp tất cả trong một truyền thống hơn. Có tất cả khả năng của trước đó, nhưng được gọi thông qua phương thức với Date param.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Flavour (yêu cầu jQuery)
$.date(Date, String)
Điều này chứa nhiều hơn là mộtformat
tùy chọn đơn giản . Nó mở rộng đối tượng Date cơ sở và bao gồm các phương thức nhưaddDays
. Để biết thêm thông tin, xin vui lòng xem Git .
Trong bản mod này, các ký tự định dạng được lấy cảm hứng từ PHP: date . Để biết danh sách đầy đủ, vui lòng xem README của tôi
Bản mod này cũng có một danh sách dài hơn các định dạng được tạo sẵn. Để sử dụng định dạng tiền tố, chỉ cần nhập tên khóa của nó.dateFormat(new Date(), 'pretty-a');
Như bạn có thể nhận thấy, bạn có thể sử dụng gấp đôi \
để thoát khỏi một nhân vật.
Ngắn nhất có thể.
Để có được định dạng như "2018-08-03":
let today = new Date().toISOString().slice(0, 10)
console.log(today)
Để có được định dạng như "8/3/2018":
let today = new Date().toLocaleDateString()
console.log(today)
Ngoài ra, bạn có thể chuyển ngôn ngữ làm đối số, ví dụ toLocaleDateString("sr")
, v.v.
Nếu bạn chỉ muốn một ngày không có thông tin về thời gian, hãy sử dụng:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
Thử cái này:
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")
Kết quả sẽ như thế nào
15/2/2012
Nếu bạn đang tìm kiếm nhiều quyền kiểm soát chi tiết hơn đối với các định dạng ngày, tôi khuyên bạn nên kiểm tra kỹ lưỡng. Thư viện tuyệt vời - và chỉ 5KB. http://momentjs.com/
Bạn có thể sử dụng khoảnh khắc.js: 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")
để tôn trọng địa phương hiện tại.
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Để chia nó thành các bước:
(new Date()).toString()
đưa ra "Thứ Sáu ngày 28 tháng 6 năm 2013 15:30:18 GMT-0700 (PDT)"
(new Date()).toString().split(' ')
chia chuỗi trên cho mỗi không gian và trả về một mảng như sau: ["Fri", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)" ]
(new Date()).toString().split(' ').splice(1,3).join(' ')
lấy các giá trị thứ hai, thứ ba và thứ tư từ mảng trên, nối chúng với khoảng trắng và trả về một chuỗi "28 tháng 6 năm 2013"
Date().split(' ').splice(1,3).join(' ')
Điều này hoạt động mọi lúc:
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");
Ngoài ra, bạn có thể gọi phương thức toLocaleDateString
với hai tham số:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
Bài viết về MSDN . Thông tin thêm về phương pháp này trên MDN .
new Date().toLocaleDateString("de-de")
không lừa cho tôi
Nếu bạn hài lòng với định dạng YYYY-MM-DD, điều này cũng sẽ làm công việc này.
new Date().toISOString().split('T')[0]
2018-03-10
Bạn có thể sử dụng thư viện Date.js mở rộng đối tượng Date, do đó bạn có thể có phương thức .today ().
Bạn có thể nhận được ngày hiện tại gọi phương thức tĩnh như thế này:
var now = Date.now()
tài liệu tham khảo:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
var dtToday = new Date(date.now);
Câu trả lời của Varun không giải thích cho Timezone Offerset . Đây là một phiên bản:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
Số TimezoneOffset
phút là, trong khi hàm tạo Ngày mất một phần nghìn giây, do đó nhân với 60000
.
Câu trả lời ngắn nhất là: new Date().toJSON().slice(0,10)
new Date().toDateString();
Kết quả:
"Thứ tư ngày 03 tháng 2 năm 2016"
Vì toISOString()
sẽ chỉ trả lại thời gian UTC hiện tại, không phải giờ địa phương. Chúng ta phải tạo một ngày bằng cách sử dụng hàm '.toString ()' để có được ngày ở yyyy-MM-dd
định dạng như
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);
Để có được ngày và giờ trong yyyy-MM-ddTHH:mm:ss
định dạng
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);
Để có được ngày và giờ trong yyyy-MM-dd HH:mm:ss
định dạng
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
Nếu bạn muốn một DD/MM/YYYY
định dạng đơn giản , tôi chỉ cần đưa ra giải pháp đơn giản này, mặc dù nó không có tiền tố thiếu số không.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toISOString().slice(0,10);
cũng sẽ làm việc
EDIT MỚI NHẤT: 8/23/19 Các ngày-FNS thư viện hoạt động giống như moment.js nhưng có dấu chân một cách nhỏ hơn. Nó cho phép bạn chọn chức năng mà bạn muốn đưa vào dự án của mình để bạn không phải biên dịch toàn bộ thư viện để định dạng ngày hôm nay. Nếu lib của bên thứ 3 tối thiểu không phải là một lựa chọn cho dự án của bạn, tôi tán thành giải pháp được chấp nhận bởi Samuel Meddows lên hàng đầu.
Bảo tồn lịch sử dưới đây vì nó đã giúp một vài người. Nhưng đối với hồ sơ, nó khá hack và có thể phá vỡ mà không có cảnh báo, như hầu hết các giải pháp trên bài đăng này
EDIT 2/7/2017 Giải pháp JS một dòng:
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 mới nhất và chrome returntodaysDate = "2/7/2017"
"hoạt động" * trong IE10 +
Giải trình
Tôi phát hiện ra rằng IE10 và IE Edge làm mọi thứ hơi khác một chút .. đi con số. với new Date(Date.now()).toLocaleString()
đầu vào,
Trả lại IE10:
"Tuesday, February 07, 2017 2:58:25 PM"
Tôi có thể viết một hàm dài lớn và FTFY. Nhưng bạn thực sự nên sử dụng Moment.js cho công cụ này. Kịch bản của tôi chỉ đơn giản là làm sạch điều này và cung cấp cho bạn ký hiệu truyền thống mở rộng của Hoa Kỳ:> todaysDate = "March 06, 2017"
Trả về IE EDGE:
"2/7/2017 2:59:27 PM"
Tất nhiên nó không thể dễ dàng như vậy. Chuỗi ngày của Edge có các ký tự "•" vô hình giữa mỗi ký tự hiển thị. Vì vậy, bây giờ chúng ta không chỉ kiểm tra xem ký tự đầu tiên có phải là số không, mà là 3 ký tự đầu tiên, vì hóa ra rằng bất kỳ ký tự đơn nào trong toàn bộ phạm vi ngày cuối cùng sẽ là dấu chấm hoặc dấu gạch chéo tại một thời điểm nào đó. Vì vậy, để giữ cho mọi thứ đơn giản, chỉ cần .slice () ba ký tự đầu tiên (bộ đệm nhỏ chống lại các shenanigans trong tương lai) và sau đó kiểm tra các con số. Có lẽ nên lưu ý rằng những dấu chấm vô hình này có khả năng tồn tại trong mã của bạn. Tôi có thể đào sâu vào điều đó nếu bạn có kế hoạch lớn hơn là chỉ in chuỗi này sang chế độ xem của bạn.
Cập nhật một lớp lót:
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];
Đó là hút để đọc. Làm thế nào về:
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];
CÂU TRẢ LỜI
Tôi đã có một lớp lót cho bạn:
new Date(Date.now()).toLocaleString().split(', ')[0];
và [1]
sẽ cho bạn thời gian trong ngày.
Bạn có thể sử dụng cái này
<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 là
<body onload='return my_curr_date();'>
<input type='text' name='dateField' id='dateField' value='' />
</body>
Nếu bạn đang sử dụng jQuery. Hãy thử một lót này:
$.datepicker.formatDate('dd/mm/yy', new Date());
Đây là quy ước để định dạng ngày
Đây là tài liệu tham khảo cho jQuery datepicker
Một cách dễ dàng để thực hiện điều đó (trong khi xem xét múi giờ hiện tại của bạn, nó tận dụng định dạng ISO yyyy-mm-dd) là:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Thông thường, đây là định dạng ngày tương thích đa mục đích và bạn có thể chuyển đổi nó thành giá trị ngày thuần túy nếu cần:
Date.parse(d); // 1582044297000
Điều gì là vấn đề lớn với điều này .. Cách sạch nhất để làm điều này là
var currentDate=new Date().toLocaleString().slice(0,10);
3/4/2018,
, tốt hơn để sử dụng new Date().toJSON().slice(0,10)
.
.slice(0,10)
Điều này có thể giúp bạn
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Điều này sẽ in ngày hiện tại ở định dạng dd / MM / yyyy
Điều này là tốt để có được định dạng ngày
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
Tôi nghĩ rằng đây là một câu hỏi cũ nhưng cách dễ nhất sẽ là như sau:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Điều này sẽ lấy thời gian hiện tại, chuyển nó thành một chuỗi dựa trên vị trí và sau đó bạn có thể gọi hàm CurrentTime để hiển thị thời gian. Đây sẽ là cách hiệu quả nhất để có được dấu ấn thời gian cho một cái gì đó.
var currentTime = new Date();