Câu hỏi Làm thế nào để có được ngày hiện tại trong JavaScript?


Làm thế nào để có được ngày hiện tại trong JavaScript?


1685
2017-10-07 11:39


gốc


var currentTime = new Date(); - Hendrik
Xem tài liệu cho đối tượng Date. Nó có các ví dụ. - Quentin
điều này sẽ giúp bạn tizag.com/javascriptT/javascriptdate.php
new Date() trả về hiện tại thời gian, không phải là hiện tại ngày. Sự khác biệt quan trọng nếu bạn đang cố gắng so sánh nó với một ngày khác không có thành phần thời gian (nghĩa là, vào lúc nửa đêm). - Steve Bennett
sử dụng momentJs, lib này là vàng cho các nhà phát triển. - RBoschini


Các câu trả lời:


Sử dụng new Date() để tạo ra một Date đối tượng chứa ngày và giờ hiện tại.

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd = '0'+dd
} 

if(mm<10) {
    mm = '0'+mm
} 

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

Điều này sẽ cho bạn ngày hôm nay theo định dạng dd / mm / yyyy.

Chỉ cần thay đổi today = mm +'/'+ dd +'/'+ yyyy; với bất kỳ định dạng nào bạn muốn.


2014
2018-02-08 04:42



cách nhận giờ và phút - lbennet
cảm ơn cho mã .. nhưng những gì tôi vẫn không nhận được nó, là dòng nếu (đ <10) {dd = '0' + dd} ... tại sao <10? từ những gì tôi hiểu từ mã là nếu ký tự của ngày nhỏ hơn 2, chỉ cần thêm 0 trước ở trước ngày .. nhưng tại sao 10? - imin
@imin: vì ít hơn 2 ký tự nghĩa là 1 ký tự ... và mọi thứ dưới 10 (1 đến 9) là 1 ký tự, vì vậy chúng tôi sẽ có 01, 02, ..., 09 - zfm
@MounaCheikhna - Làm thế nào chúng ta có thể vào năm 999? - nnnnnn
Trao đổi xung quanh tháng và ngày nếu bạn không ở Bắc Mỹ. - Mark Micallef


var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Sử dụng replace nếu bạn định sử dụng lại utc biến, chẳng hạn như new Date(utc), vì Firefox và Safari không nhận ra ngày có dấu gạch ngang.


341
2017-09-29 14:13



Có vẻ tốt. Bất kỳ nhược điểm này? - Norbert
Tôi không nghĩ vậy :) Có vẻ khá đơn giản! - Varun Natraaj
toJSON () trả về dưới dạng utc datetime - Andy
Nó không xem xét TimezoneOffset. Tại thời điểm thử nghiệm của tôi, tôi đã tìm kiếm "bây giờ" và tôi đã "ngày hôm qua". stackoverflow.com/questions/13646446/… - mickmackusa
Hoàn hảo. Đây là cách sạch nhất để làm điều này tôi thấy ở đây. Hoạt động tốt trong MomentJS cho "Hôm nay, không phải bây giờ" moment( new Date().toJSON().slice(0, 10) ) - Kyle Hotchkiss


CẬP NHẬT!, Cuộn xuống

Nếu bạn muốn một cái gì đó đơn giản đẹp 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 trì hoãn, cuối cùng tôi đã GitHubbed và cập nhật điều này với giải pháp cuối cùng mà tôi đã sử dụng cho bản thân mình. Nó thậm chí đã có một số chỉnh sửa phút cuối để làm cho nó ngọt ngào hơn! Nếu bạn đang tìm kiếm cái cũ jsFiddle, xin vui lòng xem này.

Bản cập nhật này xuất hiện 2 hương vị, vẫn còn tương đối nhỏ, mặc dù không nhỏ như câu trả lời ở trên, 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 còn ít cồng kềnh hơn so với moment.js. Trong khi moment.js là tốt đẹp, imo, nó có nhiều phương pháp thế tục, đòi hỏi thời gian học tập như thể nó là một ngôn ngữ. Mỏ ở đây sử dụng cùng một định dạng phổ biến như PHP: ngày tháng.

đường dẫn nhanh

Hương vị 1 new Date().format(String)   My Fav cá nhân. Tôi biết điều cấm kị, nhưng hoạt động rất tốt trên đối tượng Date. Chỉ cần nhận thức được bất kỳ mod khác bạn có thể có đối tượng ngày.

//  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 thức tất cả trong một truyền thống hơn. Có tất cả các khả năng của trước đó, nhưng được gọi thông qua phương pháp với ngày param.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

BONUS Flavor (yêu cầu jQuery) $.date(Date, String)   Điều này chứa nhiều hơn chỉ đơn giản format Tùy chọ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, vui lòng xem Git.

Trong mod này, các ký tự định dạng được lấy cảm hứng từ PHP: ngày tháng. Để có danh sách đầy đủ, vui lòng xem README

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 được tạo sẵn, chỉ cần nhập tên khóa của nó. dateFormat(new Date(), 'pretty-a');

  • 'hợp chất'
    • 'commonLogFormat' == 'd / M / Y: G: i: s'
    • 'exif' == 'Y: m: d G: i: s'
    • 'isoYearWeek' == 'Y \\ WW'
    • 'isoYearWeek2' == 'Y - \\ WW'
    • 'isoYearWeekDay' == 'Y \\ WWj'
    • 'isoYearWeekDay2' == 'Y - \\ WW-j'
    • 'mySQL' == 'Y-m-d h: i: s'
    • 'postgreSQL' == 'Y.z'
    • 'postgreSQL2' == 'Yz'
    • 'soap' == 'Y-m-d \\ TH: i: s.u'
    • 'soap2' == 'Y-m-d \\ TH: i: s.uP'
    • 'unixTimestamp' == '@U'
    • 'xmlrpc' == 'Ymd \\ TG: i: s'
    • 'xmlrpcCompact' == 'Ymd \\ tGis'
    • 'wddx' == 'Y-n-j \\ TG: i: s'
  • 'hằng số'
    • 'AMERICAN' == 'F j Y'
    • 'AMERICANSHORT' == 'm / d / Y'
    • 'AMERICANSHORTWTIME' == 'm / d / Y h: i: sA'
    • 'ATOM' == 'Y-m-d \\ TH: i: sP'
    • 'COOKIE' == 'l d-M-Y H: i: s T'
    • 'CHÂU ÂU' == 'j F Y'
    • 'EUROPEANSHORT' == 'd.m.Y'
    • 'EUROPEANSHORTWTIME' == 'd.m.Y H: i: s'
    • 'ISO8601' == 'Y-m-d \\ TH: i: sO'
    • 'PHÁP LÝ' == 'j F Y'
    • 'RFC822' == 'D d M y H: i: s O'
    • 'RFC850' == 'l d-M-y H: i: s T'
    • 'RFC1036' == 'D d M y H: i: s O'
    • 'RFC1123' == 'D d M Y H: i: s O'
    • 'RFC2822' == 'D d M Y H: i: s O'
    • 'RFC3339' == 'Y-m-d \\ TH: i: sP'
    • 'RSS' == 'D d M Y H: i: s O'
    • 'W3C' == 'Y-m-d \\ TH: i: sP'
  • 'đẹp'
    • 'pretty-a' == 'g: i.sA l jS \\ o \\ f F Y'
    • 'pretty-b' == 'g: iA l jS \\ o \\ f F Y'
    • 'pretty-c' == 'n / d / Y g: iA'
    • 'pretty-d' == 'n / d / Y'
    • 'pretty-e' == 'F jS - g: ia'
    • 'pretty-f' == 'g: iA'

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.



187
2018-02-10 14:33



@KamranAhmed Gần 2 năm và 40 phiếu bầu sau đó, tôi muốn nói nỗ lực này đáng giá. LoL. Tôi đã mở rộng lớp này rất nhiều cá nhân, nhưng chưa tải lên vì tôi nghĩ hầu hết mọi người sẽ sử dụng plugin ngày js khác mà tôi thấy được đề xuất, nhưng tôi đoán tôi nên làm cho nó "công khai" và thêm nó lên đây. - SpYk3HH
moment.js giờ là thứ bạn sẽ sử dụng trong những ngày này - Christian Stewart
Thumbs up cho các nỗ lực và trọng lượng nhẹ! - Mike Devenney
Ở trên, có một lỗi đánh máy (điều đó đã khiến tôi mất một lúc), nó sử dụng một biến "hôm nay" trong dòng: "dayOfMonth = today +" - user1435707
"today + (objToday.getDate () <10)? '0' + objToday.getDate () + domEnder: objToday.getDate () + domEnder" - JS là ngôn ngữ ngu ngốc. - Alex S


Nếu bạn chỉ muốn một ngày không có thông tin thời gian, hãy sử dụng:

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);


115
2017-09-02 06:14



Đây có vẻ là câu trả lời duy nhất thực sự trả lời câu hỏi. Mọi người khác trả lời về cách định dạng ngày tháng thành chuỗi. - Inrego
++ câu trả lời hay nhất trong chủ đề này - Pawel Gradecki
Thật. Đây là câu trả lời đúng cho vấn đề. - tkarls


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ẽ giống như

15/2/2012

90
2018-02-15 08:48





Ngắn nhất có thể. 

Để nhận định dạng như "2018-08-03":

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

console.log(today)

Để nhận định dạng như "8/3/2018":

let today = new Date().toLocaleDateString()

console.log(today)

Ngoài ra, bạn có thể vượt qua miền địa phương làm đối số, ví dụ toLocaleDateString("sr"), v.v.


62
2018-03-10 16:30





Nếu bạn đang tìm kiếm kiểm soát chi tiết hơn về định dạng ngày, tôi khuyên bạn nên kiểm tra các khoảnh khắc. Thư viện tuyệt vời - và chỉ 5KB. http://momentjs.com/


57
2017-12-12 01:03



Đây là lib thời gian tốt nhất tôi đã tìm thấy! - andho
Hỗ trợ bản địa hóa như một nét duyên dáng. - Risadinha
Những ngày này chúng tôi sử dụng ngày-fns - nó xử lý ngày như không thay đổi (Moment mutates ngày), là nhanh hơn và là mô-đun (chỉ cần nhập khẩu những gì bạn cần). - Luke Williams
Vâng, tôi không thể đồng ý nhiều hơn. - d3cypher


Bạn có thể sử dụng moment.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>


45
2017-08-16 11:56



Câu trả lời hay nhất, MomentJs trông thật tuyệt vời. - nottinhill
Thời điểm là quá mức cần thiết để chỉ nhận được ngày hiện tại. - Dan Dascalescu
Hoặc là moment().format("L") để tôn trọng ngôn ngữ hiện tại. - Dunc
@DanDascalescu Trên thực tế, đặc tả cơ sở Javascript cho DateTime là xấu. - Todd