1. 程式人生 > >JavaScript Date物件

JavaScript Date物件

  本篇主要介紹 Date 日期和時間物件的操作。

目錄

1. 介紹:闡述 Date 物件。

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

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

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

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

1. 介紹

1.1 說明

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

1.2 屬性

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

2. 建構函式

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

3. 例項方法

  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. 靜態方法

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. 實際操作

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

相關推薦

前端學習_10.Javascript Date物件

文章目錄定義建立常用方法下載安裝日期格式化中文支援 Date物件 定義 Date 物件用於處理日期與時間。 建立 建立Date 物件: new Date() 以下四種方法同樣可以建立 Date 物

(十 二)JavaScript Date 物件、定時器

系統提供的Date物件 使用建構函式建立一個Date物件 var date = new Date(); console.log(date); //Tue Nov 06 2018 11:51:05 GMT+0800 (中國標準時間) Date例項有一個獨特的

html javascript Date物件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head

JavaScript Date物件

  本篇主要介紹 Date 日期和時間物件的操作。 目錄 1. 介紹:闡述 Date 物件。 2. 建構函式:介紹 Date 物件的建構函式new Date()幾種方式。 3. 例項方法:介紹 Date 物件的get、set等例項方法。 4. 靜態方法:介紹 Date 物件的靜態方法:Date.no

Javascript Date物件的是以毫秒為單位的?

最近發現前端 new Date(unix_time).toLocaleString()返回的字串總是不正確. 但是查閱大部分的網站和百度知道,大部分都說這個建構函式和setTime方法接收的是毫秒數. 但有一個網站是這樣寫的 先 var unixTimestamp

JavaScript中的Date物件在Safari與IOS 日期出錯

首先我需要的展示的時間格式是這樣的2018/03/06 下面這個是開始時間 replace(/\-/g, "/"); 轉化成我想要的格式 $scope.endtime = $stateParams.endtime.replace(/\-/g, "/"); 下面這個是結束時間&n

javaScript複習(六)Math物件與MathAPI 、Date物件與DateAPI

Math: 專門執行數學計算的物件,封裝了數學計算中常用的常量 1. 取整:3種:                 上取整: Math.c

大神講解:JavaScript時間物件Date

  日期物件Date 一 new Date() 獲取當前時間 1、 new Date() 本地時間   var d = new Date(); alert(d);//Wed Aug 23 2017 21:36:24 GM

javascriptdate物件,Date物件,時鐘案列,setInterval,setTimeout,定時器

javascript中date物件,Date物件,時鐘案列,setInterval,setTimeout,定時器 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>

javascript型別系統——日期Date物件

前面的話   Date物件是javascript語言中內建的資料型別,用於提供日期和時間的操作介面。Date物件是在早期java中的java.util.Date類基礎上建立的,為此,Date型別使用自UTC1970年1月1日0點開始經過的毫秒數來儲存日期,它可以表示的時間範圍是1970年1月1日0點前後的各

javascript中new Date()物件和getTime()方法的問題(又是來提問,(-__-)b)

昨天到現在一直在完成一個用canvas實現的倒計時的小案列,用到Date物件和getTime方法來計算倒計時的時間。老是有問題,不知道怎麼回事。貼error: 昨天是2016年7月18日 endTim

【微信小程式開發之坑】javascript建立date物件

最近開發中用到date,開始以如下方式來建立: var date = new Date('2018-01-30 11:00:00'); 在開發工具上,除錯,ios 和 android都好好的。 在真機上一跑,android沒問題,ios出問題了。 不應該呀,按理,在開發工具上整合的是ios瀏覽器核心。

javascript日期物件Date物件方法

Date() 返回當日的日期和時間。 getDate() 從 Date 物件返回一個月中的某一天 (1 ~ 31)。 getDay() 從 Date 物件返回一週中的某一天 (0 ~ 6)。 getMonth() 從 Date 物件返回月份 (0 ~ 11)。 getFul

JavaScript 日期物件Date(宣告/Date物件的方法/返回距離1970/01/01毫秒數)

Date 1.  日期物件宣告 var date1 = new Date(); //設定製定時間:(相容最強) var date2 = new Date("2016/01/27 12:00:

javascript Date format(js日期格式化)

占位符 星期 .com switch pro com 毫秒 ida monday 方法一: // 對Date的擴展,將 Date 轉化為指定格式的String// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個占位符, // 年(y)可

JavaScript-Date對象

test hour mes prototype led height 本地 fse minute Date對象就是我們常說的日期(時間)對象。 Date對象主要用於啟用日期和時間的基本存儲、檢索和計算。 所有主流瀏覽器均支持該對象。 Date 對象的屬 屬性描述 co

JavaScript Date.parse()詳解

note num order 寫法 瀏覽器兼容 支持 div ref ice Date.parse() 函數用於分析一個包含日期的字符串,並返回該日期與 1970 年 1 月 1 日午夜之間相差的毫秒數。 語法 Date.parse( dateString ) 參數

tinydate.js[v0.1]關於Javascript Date的工具

orm || def 代碼復用 eth clas subst bst ini 編寫初衷 JavaScript的Date對象所提供的方法無法滿足生產的需要,比如他的Month,他的日期加減,比如我要得到1993年1月1日到現在有多少天,比如我想知道我在這個世界上活了多少個小時

Javascript Date類型

bsh lin 調用 isa elk cdc xtu rvm gmm Date 類型使用自 UTC 1970 年 1 月 1日 午夜 開始經過的毫秒數來保存日期。 創建日期對象 var now = new Date();//獲取當前日期 Date.par

JavaScript 面向物件程式設計實現

JavaScript 面向物件程式設計實現 本文主要講述js面向物件的實現方式(繼承) 面向物件本來就是把某些問題(邏輯),用物件的方式描述,使得業務邏輯能更加清晰,提高維護性,降低實現複雜度。 面向物件的三大特徵:封裝,多型,繼承。(JavaScript 是沒有多型的特性的