Nhận năm hiện tại bằng JavaScript


975

Làm cách nào để có được năm hiện tại bằng JavaScript?


10
Đáng kinh ngạc nếu thực sự không có một bản sao cho điều này. Điều này là gần, nhưng không chính xác.
TJ Crowder

5
Hãy tự mình tham khảo, đây là một tìm kiếm đơn giản Ngày Đối tượng
eprebello

2
Lưu ý rằng năm "hiện tại" không nhất thiết phải giống nhau đối với mọi người trên hành tinh cùng một lúc. Người ta phải xem xét múi giờ. Hầu hết các câu trả lời ở đây đưa ra năm hiện tại theo múi giờ địa phương của người dùng (giả sử mã đang chạy trong trình duyệt web).
Matt Johnson-Pint

Câu trả lời:


1762

Tạo một new Date()đối tượng và gọi getFullYear():

new Date().getFullYear()
// returns the current year

Chiếm câu trả lời được chấp nhận để cung cấp một số bối cảnh ví dụ cơ bản như chân trang luôn hiển thị năm hiện tại:

<footer>
    &copy; <span id="year"></span>
</footer>

Một nơi khác được thực hiện sau khi HTML ở trên đã được tải:

<script>
    document.getElementById("year").innerHTML = new Date().getFullYear();
</script>


26
Để biết các chức năng khác trong cùng một gia đình, hãy xem: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/
Kẻ

Để có được năm theo thời gian phổ quát, hãy sử dụng getUTCFullYear ()
Courtney Pattison

2
Ví dụ chân trang ở trên sẽ rõ ràng hơn nếu chỉ là: <footer> <span id = "year"> </ span> </ footer>
Mike

227
// Return today's date and time
var currentTime = new Date()

// returns the month (from 0 to 11)
var month = currentTime.getMonth() + 1

// returns the day of the month (from 1 to 31)
var day = currentTime.getDate()

// returns the year (four digits)
var year = currentTime.getFullYear()

// write output MM/dd/yyyy
document.write(month + "/" + day + "/" + year)


3
Sử dụng getFullYear () thay vì getYear (). Xem stackoverflow.com/questions/16296897/
Mạnh

95

Đây là một phương pháp khác để có được ngày

new Date().getDate()          // Get the day as a number (1-31)
new Date().getDay()           // Get the weekday as a number (0-6)
new Date().getFullYear()      // Get the four digit year (yyyy)
new Date().getHours()         // Get the hour (0-23)
new Date().getMilliseconds()  // Get the milliseconds (0-999)
new Date().getMinutes()       // Get the minutes (0-59)
new Date().getMonth()         // Get the month (0-11)
new Date().getSeconds()       // Get the seconds (0-59)
new Date().getTime()          // Get the time (milliseconds since January 1, 1970)

5

Đó là cách tôi nhúng nó và xuất ra trang web HTML của mình:

<div class="container">
    <p class="text-center">Copyright &copy; 
        <script>
            var CurrentYear = new Date().getFullYear()
            document.write(CurrentYear)
        </script>
    </p>
</div>

Đầu ra cho trang HTML như sau:

Bản quyền © 2018


4
Tôi không đồng ý. Đây rõ ràng là một câu hỏi dành cho người mới bắt đầu và chúng ta không nên dạy thực hành xấu cho bất cứ ai, đặc biệt là những người bắt đầu học các nguyên tắc cơ bản. Ngoài ra, câu trả lời của bạn không cung cấp bất kỳ thông tin mới nào như new Date().getFullYear()đã được nêu trong câu trả lời được chấp nhận.
leo núi

2
1.) Thực tiễn xấu nói bạn, nhưng những người khác không đồng ý vì đây là Javascript vanilla hợp lệ; 2.) Câu trả lời của tôi cung cấp thông tin mới về cách triển khai điều này trong trang HTML và không chỉ console.log ().
Lập trình viên Jerusalem

2
"Tốt" là chủ quan. Có nhiều hơn một cách để lột da một con mèo và hơn một cách để giải quyết các vấn đề mã hóa. Nếu giải pháp đơn giản và hiệu quả, thì tại sao điều này không "tốt" trong quan điểm khiêm tốn của bạn?
Lập trình viên Jerusalem

1
Vâng, thưa ông, rõ ràng đây không phải là một tiêu chuẩn khách quan rõ ràng (và thực sự là một cuộc tranh luận mở), vì có nhiều người không đồng ý với bạn: stackoverflow.com/questions/802854/, ... và cũng ở đây : stackoverflow.com/questions/18789190/why-not-document-write Do đó, việc bạn đánh dấu danh tiếng của tôi xuống vì ý kiến ​​chủ quan của bạn là không tốt vì có những người khác sẽ không đồng ý với bạn. Hãy nhớ điểm chính ở đây và tôi chỉ cung cấp một cách đơn giản để in tệp này sang tệp HTML thay vì console.log ().
Lập trình viên Jerusalem

1
Vui lòng xem hai liên kết trước nơi bạn có thể thấy hàng trăm người không đồng ý với bạn. Ngoài ra còn có hàng trăm người đồng ý với bạn, vì vậy đây không phải là vấn đề rõ ràng. Bạn khăng khăng theo cách của bạn hoặc đường cao là khá kín vì bạn không thể chắc chắn nếu ai đó có thể quyết định rằng document.write () là giải pháp tốt nhất cho nhu cầu của anh ấy / cô ấy.
Lập trình viên Jerusalem

4

cho năm hiện tại, chúng ta có thể sử dụng getFullYear () từ lớp Date, tuy nhiên có nhiều hàm bạn có thể sử dụng theo yêu cầu, một số hàm là,

var now = new Date()
console.log("Current Time is: " + now);

// getFullYear function will give current year 
var currentYear = now.getFullYear()
console.log("Current year is: " + currentYear);

// getYear will give you the years after 1990 i.e currentYear-1990
var year = now.getYear()
console.log("Current year is: " + year);

// getMonth gives the month value but months starts from 0
// add 1 to get actual month value 
var month = now.getMonth() + 1
console.log("Current month is: " + month);

// getDate gives the date value
var day = now.getDate()
console.log("Today's day is: " + day);


2

Lấy ví dụ này, bạn có thể đặt nó ở bất cứ đâu bạn muốn hiển thị mà không cần tham khảo tập lệnh ở chân trang hoặc ở nơi nào khác như các câu trả lời khác

<script>new Date().getFullYear()>document.write(new Date().getFullYear());</script>

Ghi chú bản quyền trên chân trang làm ví dụ

Copyright 2010 - <script>new Date().getFullYear()>document.write(new Date().getFullYear());</script>

Đây là một câu trả lời không cần thiết.
Crocsx

@crocsx bạn có thể thêm mã này vào HTML của mình ở nơi bạn muốn hiển thị mà không cần tham khảo tập lệnh ở chân trang hoặc ở nơi nào khác như tất cả các câu trả lời khác
Majali

giống như câu trả lời của Lập trình viên Jerusalem hơi khác một chút
Crocsx

@Crocsx câu trả lời này sạch hơn không bao gồm phần tử HTML và các lớp CSS giả sử bạn sử dụng bootstrap, đó chỉ là một dòng, phải không?
Majali

câu hỏi chỉ là lấy năm trong JS, không lấy năm và đặt nó ở chân trang. Và trong trường hợp đó, bạn có thể đã chỉnh sửa câu trả lời khác. Dù sao ...
Crocsx

1

Bạn chỉ có thể sử dụng javascript như thế này. Nếu không, bạn có thể sử dụng Plugin khoảnh khắc giúp ứng dụng lớn.

new Date().getDate()          // Get the day as a number (1-31)
new Date().getDay()           // Get the weekday as a number (0-6)
new Date().getFullYear()      // Get the four digit year (yyyy)
new Date().getHours()         // Get the hour (0-23)
new Date().getMilliseconds()  // Get the milliseconds (0-999)
new Date().getMinutes()       // Get the minutes (0-59)
new Date().getMonth()         // Get the month (0-11)
new Date().getSeconds()       // Get the seconds (0-59)
new Date().getTime()          // Get the time (milliseconds since January 1, 1970)

function generate(type,element)
{
	var value = "";
	var date = new Date();
	switch (type) {
		case "Date":
			value = date.getDate();		// Get the day as a number (1-31)
			break;
		case "Day":
			value = date.getDay();		// Get the weekday as a number (0-6)
			break;
		case "FullYear":
			value = date.getFullYear();	// Get the four digit year (yyyy)
			break;
		case "Hours":
			value = date.getHours();	// Get the hour (0-23)
			break;
		case "Milliseconds":
			value = date.getMilliseconds();	// Get the milliseconds (0-999)
			break;
		case "Minutes":
			value = date.getMinutes();     // Get the minutes (0-59)
			break;
		case "Month":
			value = date.getMonth();	// Get the month (0-11)
			break;
		case "Seconds":
			value = date.getSeconds();	// Get the seconds (0-59)
			break;
		case "Time":
			value = date.getTime();		// Get the time (milliseconds since January 1, 1970)
			break;
	}

	$(element).siblings('span').text(value);
}
li{
  list-style-type: none;
  padding: 5px;
}

button{
  width: 150px;
}

span{
  margin-left: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<ul>
	<li>
		<button type="button" onclick="generate('Date',this)">Get Date</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Day',this)">Get Day</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('FullYear',this)">Get Full Year</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Hours',this)">Get Hours</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Milliseconds',this)">Get Milliseconds</button>
		<span></span>
	</li>

	<li>
		<button type="button" onclick="generate('Minutes',this)">Get Minutes</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Month',this)">Get Month</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Seconds',this)">Get Seconds</button>
		<span></span>
	</li>
	<li>
		<button type="button" onclick="generate('Time',this)">Get Time</button>
		<span></span>
	</li>
</ul>


0

TL; DR

Hầu hết các câu trả lời được tìm thấy ở đây chỉ đúng nếu bạn cần năm hiện tại dựa trên múi giờ và độ lệch của máy cục bộ (phía máy khách) - nguồn, trong hầu hết các trường hợp, không thể được coi là đáng tin cậy (vì nó có thể khác với máy này) .

Các nguồn đáng tin cậy là:

  • Đồng hồ của máy chủ web (nhưng đảm bảo rằng nó đã được cập nhật)
  • API thời gian & CDN

Chi tiết

Một phương thức được gọi trong Datetrường hợp sẽ trả về một giá trị dựa trên thời gian cục bộ của máy của bạn.

Thông tin chi tiết có thể được tìm thấy trong "tài liệu web MDN": đối tượng Ngày JavaScript .

Để thuận tiện cho bạn, tôi đã thêm một ghi chú có liên quan từ tài liệu của họ:

(...) Các phương thức cơ bản để lấy ngày và giờ hoặc các thành phần của nó đều hoạt động trong múi giờ (tức là hệ thống máy chủ) cục bộ và bù.

Một nguồn khác đề cập đến điều này là: Đối tượng ngày và giờ JavaScript

điều quan trọng cần lưu ý là nếu đồng hồ của ai đó tắt sau vài giờ hoặc họ ở múi giờ khác, thì đối tượng Date sẽ tạo thời gian khác với thời gian được tạo trên máy tính của bạn.

Một số nguồn đáng tin cậy mà bạn có thể sử dụng là:

Nhưng nếu bạn chỉ đơn giản là không quan tâm đến độ chính xác về thời gian hoặc nếu trường hợp sử dụng của bạn yêu cầu giá trị thời gian liên quan đến thời gian của máy cục bộ thì bạn có thể sử dụng Datecác phương thức cơ bản của Javascript như Date.now(), hoặc new Date().getFullYear()(cho năm hiện tại) một cách an toàn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.