首頁 web前端 js教程 JavaScript Date物件詳解_javascript技巧

JavaScript Date物件詳解_javascript技巧

May 16, 2016 pm 03:12 PM
javascript

本篇主要介紹 Date 日期和時間對象的操作,具體內容如下

目錄
1. 介紹:闡述 Date 物件。

2. 建構子:介紹 Date 物件的建構子new Date()幾種方式。

3. 實例方法:介紹 Date 物件的get、set等實例方法。

4. 靜態方法:介紹 Date 物件的靜態方法:Date.now()、 Date.parse()等。

5. 實際操作:介紹 Date 物件的一些範例:取得倒數計時、比較2個Date物件的大小等等。

一. 介紹
1.1 說明

Date對象,是操作日期和時間的對象。 Date物件對日期和時間的操作只能透過方法。

1.2 屬性

無;Date物件對日期和時間的操作只能透過方法。

二. 建構子
2.1 new Date() :傳回目前的本地日期和時間

參數:無

傳回值:

{Date} 傳回一個表示本地日期和時間的Date物件。

範例:

var dt = new Date();
console.log(dt); // => 返回一个表示本地日期和时间的Date对象
登入後複製

2.2 new Date(milliseconds) :把毫秒數轉換為Date物件

參數:

①milliseconds {int} :毫秒數;表示從'1970/01/01 00:00:00'為起點,開始疊加的毫秒數。

注意:起點的時分秒還要加上目前所在的時區,北京時間的時區為東8區,起點時間實際為:'1970/01/01 08:00:00'

傳回值:

{Date} 傳回一個疊加後的Date物件。

範例:

var dt = new Date(1000 * 60 * 1); // 前进1分钟的毫秒数
console.log(dt); // => {Date}:1970/01/01 08:01:00
dt = new Date(-1000 * 60 * 1); // 倒退1分钟的毫秒数
console.log(dt); // => {Date}:1970/01/01 07:59:00
登入後複製

2.3 new Date(dateStr) :把字串轉換為Date物件

參數:

①dateStr {string} :可轉換為Date物件的字串(可省略時間);字串的格式主要有兩種:

1) yyyy/MM/dd HH:mm:ss (建議):若省略時間,回傳的Date物件的時間為 00:00:00。

2) yyyy-MM-dd HH:mm:ss :若省略時間,傳回的Date物件的時間為 08:00:00(加上本地時區)。若不省略時間,此字串在IE中會轉換失敗!

傳回值:

{Date} 傳回一個轉換後的Date物件。

範例:

var dt = new Date('2014/12/25'); // yyyy/MM/dd
console.log(dt); // => {Date}:2014/12/25 00:00:00
dt = new Date('2014/12/25 12:00:00'); // yyyy/MM/dd HH:mm:ss
console.log(dt); // => {Date}:2014/12/25 12:00:00
 
dt = new Date('2014-12-25'); // yyyy-MM-dd
console.log(dt); // => {Date}:2014-12-25 08:00:00 (加上了东8区的时区)
dt = new Date('2014-12-25 12:00:00'); // yyyy-MM-dd HH:mm:ss (注意:此转换方式在IE中会报错!)
console.log(dt); // => {Date}:2014-12-25 12:00:00
登入後複製

2.4 new Date(year, month, opt_day, opt_hours, opt_minutes, opt_seconds, opt_milliseconds) :把年月日、時分秒轉換為Date物件

參數:

①year {int} :年份;4位數字。如:1999、2014

②month {int} :月份;2位數字。從0開始計算,0表示1月、11表示12月份。

③opt_day {int} 可選:號; 2位數字;從1開始計算,1表示1號。

④opt_hours {int} 可選:時;2位數字;取值0~23。

⑤opt_minutes {int} 可選:分;2位數字;取值0~59。

⑥opt_seconds {int} 可選:秒;2未數字;取值0~59。

⑦opt_milliseconds {int} 可選:毫秒;取值0~999。

傳回值:

{Date} 傳回一個轉換後的Date物件。

範例:

var dt = new Date(2014, 11); // 2014年12月(这里输入的月份数字为11)
console.log(dt); // => {Date}:2014/12/01 00:00:00
dt = new Date(2014, 11, 25); // 2014年12月25日
console.log(dt); // => {Date}:2014/12/25 00:00:00
dt = new Date(2014, 11, 25, 15, 30, 40); // 2014年12月25日 15点30分40秒
console.log(dt); // => {Date}:2014/12/25 15:30:40
dt = new Date(2014, 12, 25); // 2014年13月25日(这里输入的月份数字为12,表示第13个月,跳转到第二年的1月)
console.log(dt); // => {Date}:2015/01/25
登入後複製

三. 實例方法
  Date物件的實例方法主要分為2種形式:本地時間和UTC時間。同一個方法,通常都會有此2種時間格式操作(方法名帶UTC的,就是操作UTC時間),這裡主要介紹對本地時間的操作。 

3.1 get方法

3.1.1 getFullYear() :傳回Date物件的年份值;4位元年份。

3.1.2 getMonth() :傳回Date物件的月份值。從0開始,所以真實月份=回傳值+1 。

3.1.3 getDate() :傳回Date物件的月份中的日期值;值的範圍1~31 。

3.1.4 getHours() :傳回Date物件的小時值。

3.1.5 getMinutes() :傳回Date物件的分鐘值。

3.1.6 getSeconds() :傳回Date物件的秒數值。

3.1.7 getMilliseconds() :傳回Date物件的毫秒值。

3.1.8 getDay() :傳回Date物件的一週中的星期值;0為星期日,1為星期一、2為星期二,依此類推

3.1.9 getTime() :傳回Date物件與'1970/01/01 00:00:00'之間的毫秒值(北京時間的時區為東8區,起點時間實際為:'1970/01 /01 08:00:00') 。

範例:

dt.getFullYear(); // => 2014:年
dt.getMonth(); // => 11:月;实际为12月份(月份从0开始计算)
dt.getDate(); // => 25:日
dt.getHours(); // => 15:时
dt.getMinutes(); // => 30:分
dt.getSeconds(); // => 40:秒
dt.getMilliseconds(); // => 333:毫秒
dt.getDay(); // => 4:星期几的值
dt.getTime(); // => 1419492640333 :返回Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00')
登入後複製

3.2 set方法

3.2.1 setFullYear(year, opt_month, opt_date) :設定Date物件的年份值;4位元年份。

3.2.2 setMonth(month, opt_date) :設定Date物件的月份值。 0表示1月,11表示12月。

3.2.3 setDate(date) :設定Date物件的月份中的日期值;值的範圍1~31 。

3.2.4 setHours(hour, opt_min, opt_sec, opt_msec) :設定Date物件的小時值。

3.2.5 setMinutes(min, opt_sec, opt_msec) :設定Date物件的分鐘值。

3.2.6 setSeconds(sec, opt_msec) :設定Date物件的秒數值。

3.2.7 setMilliseconds(msec) :設定Date物件的毫秒值。

範例:

var dt = new Date();
dt.setFullYear(2014); // => 2014:年
dt.setMonth(11); // => 11:月;实际为12月份(月份从0开始计算)
dt.setDate(25); // => 25:日
dt.setHours(15); // => 15:时
dt.setMinutes(30); // => 30:分
dt.setSeconds(40); // => 40:秒
dt.setMilliseconds(333); // => 333:毫秒
console.log(dt); // => 2014年12月25日 15点30分40秒 333毫秒
登入後複製

3.3 其他方法

3.3.1 toString() :将Date转换为一个'年月日 时分秒'字符串

3.3.2 toLocaleString() :将Date转换为一个'年月日 时分秒'的本地格式字符串

3.3.3 toDateString() :将Date转换为一个'年月日'字符串

3.3.4 toLocaleDateString() :将Date转换为一个'年月日'的本地格式字符串

3.3.5 toTimeString() :将Date转换为一个'时分秒'字符串

3.3.6 toLocaleTimeString() :将Date转换为一个'时分秒'的本地格式字符串

3.3.7 valueOf() :与getTime()一样, 返回Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00')

示例:

var dt = new Date();
console.log(dt.toString()); // => Tue Dec 23 2014 22:56:11 GMT+0800 (中国标准时间) :将Date转换为一个'年月日 时分秒'字符串
console.log(dt.toLocaleString()); // => 2014年12月23日 下午10:56:11 :将Date转换为一个'年月日 时分秒'的本地格式字符串
 
console.log(dt.toDateString()); // => Tue Dec 23 2014 :将Date转换为一个'年月日'字符串
console.log(dt.toLocaleDateString()); // => 2014年12月23日 :将Date转换为一个'年月日'的本地格式字符串
 
console.log(dt.toTimeString()); // => 22:56:11 GMT+0800 (中国标准时间) :将Date转换为一个'时分秒'字符串
console.log(dt.toLocaleTimeString()); // => 下午10:56:11 :将Date转换为一个'时分秒'的本地格式字符串
 
console.log(dt.valueOf()); // => 返回Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00')
登入後複製

四. 静态方法
4.1 Date.now()

说明:返回当前日期和时间的Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00')

参数:无

返回值:

{int} :当前时间与起始时间之间的毫秒数。

示例:

console.log(Date.now()); // => 1419431519276
登入後複製

4.2 Date.parse(dateStr)

说明:把字符串转换为Date对象 ,然后返回此Date对象与'1970/01/01 00:00:00'之间的毫秒值(北京时间的时区为东8区,起点时间实际为:'1970/01/01 08:00:00')

参数:

①dateStr {string} :可转换为Date对象的字符串(可省略时间);字符串的格式主要有两种:

1) yyyy/MM/dd HH:mm:ss (推荐):若省略时间,返回的Date对象的时间为 00:00:00。

2) yyyy-MM-dd HH:mm:ss :若省略时间,返回的Date对象的时间为 08:00:00(加上本地时区)。若不省略时间,此字符串在IE中返回NaN(非数字)!

返回值:

{int} 返回转换后的Date对象与起始时间之间的毫秒数。

示例:

console.log(Date.parse('2014/12/25 12:00:00')); // => 1419480000000
console.log(Date.parse('2014-12-25 12:00:00')); // => 1419480000000 (注意:此转换方式在IE中返回NaN!)
登入後複製

五. 实际操作
5.1 C#的DateTime类型转换为Js的Date对象

说明:C#的DateTime类型通过Json序列化返回给前台的格式为:"\/Date(1419492640000)\/" 。中间的数字,表示DateTime的值与起始时间之间的毫秒数。

示例:

后台代码:简单的ashx

public void ProcessRequest (HttpContext context) {
 System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
 DateTime dt = DateTime.Parse("2014-12-25 15:30:40");
 string rs = js.Serialize(dt); // 序列化成Json
 context.Response.ContentType = "text/plain";
 context.Response.Write(rs);
}
登入後複製

前台代码:

var dateTimeJsonStr = '\/Date(1419492640000)\/'; // C# DateTime类型转换的Json格式
var msecStr = dateTimeJsonStr.toString().replace(/\/Date\(([-]?\d+)\)\//gi, "$1"); // => '1419492640000' :通过正则替换,获取毫秒字符串
var msesInt = Number.parseInt(msecStr); // 毫秒字符串转换成数值
var dt = new Date(msesInt); // 初始化Date对象
console.log(dt.toLocaleString()); // => 2014年12月25日 下午3:30:40
登入後複製

5.2 获取倒计时

说明:计算当前时间离目的时间相差多少天时分。

示例:

/**
* 返回倒计时
* @param dt {Date}:目的Date对象
* @return {Strin} :返回倒计时:X天X时X分
*/
function getDownTime(dt) {
 // 1.获取倒计时
 var intervalMsec = dt - Date.now(); // 目的时间减去现在的时间,获取两者相差的毫秒数
 var intervalSec = intervalMsec / 1000; // 转换成秒数
 var day = parseInt(intervalSec / 3600 / 24); // 天数
 var hour = parseInt((intervalSec - day * 24 * 3600) / 3600); // 小时
 var min = parseInt((intervalSec - day * 24 * 3600 - hour * 3600) / 60); // 分钟
 
 // 2.若相差的毫秒小于0 ,表示目的时间小于当前时间,这时的取的值都是负的:-X天-时-分,显示时,只显示天数前面为负的就行。
 if (intervalMsec < 0) {
  hour = 0 - hour;
  min = 0 - min;
 }
 
 // 3.拼接字符串并返回
 var rs = day + '天' + hour + '时' + min + '分';
 return rs;
}
 
// 当前时间:2014/12/28 13:26
console.log(getDownTime(new Date('2015/06/01'))); // => 154天10时33分
console.log(getDownTime(new Date('2014/01/01'))); // => -361天13时26分
 
登入後複製

5.3 比较2个Date对象的大小

说明:可以对比2者的与起始时间的毫秒数,来区分大小。

示例:

var dt1 = new Date('2015/12/01');
var dt2 = new Date('2015/12/25');
console.log(dt1 > dt2); // => false
登入後複製

以上就是本文的全部内容,希望对大家的学习有所帮助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript與WebSocket:打造高效率的即時影像處理系統 JavaScript與WebSocket:打造高效率的即時影像處理系統 Dec 17, 2023 am 08:41 AM

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數

See all articles