Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
擊右上方紅色按鈕關注“web秀”,讓你真正秀起來
任何事情都離不開時間,太陽每天升起的時間,每天你上班的時間,中午吃飯時間等等。在編程生涯中,無時無刻都有一個時間來引導,如數據創建時間(createTime),更新時間(updateTime)等。今天來說說JavaScript的Date對象。
var date = new Date();
這時的時間是當前時間。
那么Date都可以用什么來作為參數呢?
1、Date對象可以使用指定時間到1970年1月1日00:00:00 UTC的毫秒數做參數。
JavaScript中Date對象的那些事兒
看到上面的結果是不是有點奇怪,當參數為0時返回的不應該是1970年1月1日00:00:00嗎?這里應該是使用了格林尼治標準時間作為計時標準,中國的時間比格林威治標準時間快8個小時,所以就是8點,而不是0點啦。(突然想到周董的一段歌詞,“我占據格林威治守候著你,在時間標準起點回憶過去,你卻在永夜了的極地旅行”,格林威治是世界計算時間和地理經度的起點,但是現在GMT時間已經不再被科學界確定,還有一個最接近GMT的世界時間標準,就是UTC啦)
2、參數也可以是(年,月,日,時,分,秒),其中至少需要兩個整數,否則就會被當做1中例子里的毫秒數了。
這里的月份是0~11,所以下面的例子月份為5時 June六月
JavaScript中Date對象的那些事兒
當然,這里的參數也可以是負數,就表示相對當前設定時間扣掉的時間。比如下圖第一個例子,月份使用了負數,于是就從2018年1月1日為基準,扣掉五個月,變為了2018年8月
JavaScript中Date對象的那些事兒
3、我們再看看0,1,-1這三個特殊數字做參數的情況。如果年份使用0,則表示的是1900年,為負數就變成了公元前。
JavaScript中Date對象的那些事兒
4、當然,除了整數,還可以用日期的字符串作為參數
JavaScript中Date對象的那些事兒
任意搭配都可以得到正確的時間,棒棒噠!
Date對象中有很多方法,這里我只挑一些常用的來說下。
1、Date() 返回當前的時間
JavaScript中Date對象的那些事兒
無論你在中間加什么參數,永遠返回當前時間
2、getDate() 返回指定時間的某一天(1~31)
getDay() 返回指定時間的星期數(0~6)
getMonth() 返回指定時間的月份(0~11)
getFullYear() 返回指定時間的四位數年份
getHours() 返回指定時間的小時(0~23)
getMinutes() 返回指定時間的分鐘數(0~59)
getSeconds() 返回指定時間的秒數(0~59)
getMilliseconds() 返回指定時間的毫秒數(0~999)
JavaScript中Date對象的那些事兒
3、getTime() 返回1970年1月1日00:00:00到指定時間的毫秒數,就是UNIX時間數的1000倍
JavaScript中Date對象的那些事兒
也就是說,UNIX時間和時間字符串相互轉換可以這樣
JavaScript中Date對象的那些事兒
除了getTime(),將時間字符串轉換成毫秒數的方法還有+Date()、Number(Date)和Date.parse()
Date()和new Date()
上面的例子里有用到Date()和new Date(),返回結果的狀態也是不同的,在這里總結一下。,Date()無論有沒有參數都是返回的當前時間的字符串,而new Date()會根據參數返回對應時間的字符串
使用Date()對象的一個簡單的應用當然就是寫日歷了~
首先,我們需要判斷當前月份的第一天是星期幾
var date = new Date(); var year = date.getFullYear(); var month = date.getMonth(); var firstDay, getFirstDay; function getFirstDay (year, month) { firstDay = new Date(year, month, 1); getFirstDay = firstDay.getDay(); }
然后再判斷當前月份的天數。選用的辦法是使用當前月份下個月的1日的時間減去1個小時,這樣就回到了當前月份最后一天,再獲取當前日期即可。
function getMonthDays (year, month) { var nextMonth = new Date(year, month + 1, 1), getMonthDays; nextMonth.setHours(nextMonth.getHours() - 1); getMonthDays = nextMonth.getDate(); }
剩下的就是將數據填充到表格里就可以啦~
但是日歷并不只能看當前月份,還可以查前一個月后一個月,那么只需要加兩個按鈕,點擊后月份減1或加1即可。
具體代碼在下面~
https://github.com/yanagao/Date.git
1970年的元旦
眾所周知,所有的編程語言都是要從1970年1月1日開始計算時間,這個時間是有什么特殊的含義嗎?在1970年的元旦0點0分0秒到底發生了什么?
上面我們提到了一個UNIX時間,就是指從1970年1月1日0時0分0秒起至現在的總秒數。我們都知道,系統有32位也有64位,那么如果把UNIX時間用32位二進制數表示,只能夠表示到2147483647秒,也就是到Tue Jan 19 2038 11:14:07 這個時間就是極限了,超過這個時間,就會變成負數,系統就掛了。在以前那個只有32位操作系統的年代,可能覺得38年之前就會有解決辦法吧(⊙﹏⊙)b。年初的時候流傳了iPhone變磚的方法,如果你把iPhone的系統時間調到1970年1月1日,重啟手機就變磚了,不舍得用自己手機試驗的同學紛紛去了蘋果體驗店。有網友就猜測,因為中國在東8區,比格林威治時間快8個小時,也就是說北京時間1970年1月1日00:00:00對應的是1969年12月31日16:00:00,UNIX時間為負,所以手機變磚,但是沒法證實這個猜測的正確性┑( ̄Д  ̄)┍。
現在的操作系統大部分都為64位,可以表示至少到263,經過各種不嚴密計算,可以算出64位二進制至少可以表示2924.7億年,應該就不用擔心系統掛掉的問題了┑( ̄Д  ̄)┍。
喜歡小編的點擊關注,了解更多知識!
構建的應用程序的時候都會帶有日期時間組件,無論是資源的創建日期還是活動的時間戳。在本文中,我將分享如何在JavaScript中以各種格式獲取當前日期。
const date = new Date();
該Date對象包含一個Number,表示從新紀元(即1970年1月1日)起經過的毫秒數。你可以將日期字符串傳遞給Date構造函數以創建指定日期的對象:
const date = new Date('Jul 12 2011');
要獲取當前年份,可以使用對象的getFullYear()方法。getFullYear()方法在Date構造函數中返回指定日期的年份:
const currentYear = date.getFullYear();
console.log(currentYear); //2020
同樣,有一些方法可以獲取當月的當前日期和當前的月份:
const today = date.getDate();
const currentMonth = date.getMonth() + 1;
該getDate()方法返回每月的當前日期(1-31)。使用getMonth()方法返回指定日期的月份,需要注意的一點是,該方法返回0索引值(0-11),其中0表示一月,11表示十二月。因此,加1可以使月份的值標準化。
now()是Date對象的靜態方法。它以毫秒為單位的值返回,該值表示從紀元以來所經過的時間。你可以將now()方法返回的毫秒數傳遞給Date構造函數以實例化新Date對象:
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
你可以使用Date對象的方法將日期格式化為多種格式(GMT,ISO等)。該toDateString()方法以我們可讀的格式返回日期:
today.toDateString(); // "Sun Jun 16 2020"
toISOString()返回遵循ISO 8601擴展格式的日期:
today.toISOString(); // "2020-06-16T08:30:00.000Z"
toUTCString()以UTC時區格式返回日期:
today.toUTCString(); // "Sat, 16 Jun 2020 08:30:00 GMT"
toLocaleDateString()以地區區時的格式返回日期:
today.toLocaleDateString(); // "6/16/2020"
除了上面提到的格式外,你的應用程序可能具有不同的數據格式。它可以是yy/dd/mm或yyyy-dd-mm格式,或者類似的格式。為了解決這個問題,最好創建一個可重用的函數,以便可以在多個項目中使用它。因此,接下來,讓我們創建一個實用程序函數,該函數將以函數參數中指定的格式返回日期:
const today = new Date();
function formatDate(date, format) {
//
}
formatDate(today, 'mm/dd/yy');
你需要使用參數中傳遞格式字符串中的月份,日期和年份分別替換字符串“ mm”,“ dd”,“ yy”。然后,使用replace(),如下所示的方法:
format.replace('mm', date.getMonth() + 1);
但是,這將導致很多methods連接在一起,并且會讓我們嘗試把函數變得更靈活更適合我們的項目時產生麻煩:
.replace('yy', date.getFullYear())
.replace('dd', date.getDate());
然后可以使用正則表達式代替methods來連接methods replace()。首先創建一個對象,該對象將代表子字符串的鍵值對及其各自的值:
const formatMap = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
};
接下來,使用正則表達式匹配并替換字符串:
formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);
完整的功能及代碼如下所示:
function formatDate(date, format) {
const map = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
}
return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched])
}
你還可以在函數中添加格式化時間戳的功能。
你現在對DateJavaScript 中的對象有更好的了解。你也可以使用其他第三方庫(例如datesj和)moment來處理應用程序中的日期。
ate 對象
Date 對象用于處理日期與實際。
創建 Date 對象: new Date().
以上四種方法同樣可以創建 Date 對象:
var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
Date 對象屬性
屬性 | 描述 |
---|---|
constructor | 返回對創建此對象的 Date 函數的引用。 |
prototype | 使您有能力向對象添加屬性和方法。 |
Date 對象方法
方法 | 描述 |
---|---|
getDate() | 從 Date 對象返回一個月中的某一天 (1 ~ 31)。 |
getDay() | 從 Date 對象返回一周中的某一天 (0 ~ 6)。 |
getFullYear() | 從 Date 對象以四位數字返回年份。 |
getHours() | 返回 Date 對象的小時 (0 ~ 23)。 |
getMilliseconds() | 返回 Date 對象的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 對象的分鐘 (0 ~ 59)。 |
getMonth() | 從 Date 對象返回月份 (0 ~ 11)。 |
getSeconds() | 返回 Date 對象的秒數 (0 ~ 59)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒數。 |
getTimezoneOffset() | 返回本地時間與格林威治標準時間 (GMT) 的分鐘差。 |
getUTCDate() | 根據世界時從 Date 對象返回月中的一天 (1 ~ 31)。 |
getUTCDay() | 根據世界時從 Date 對象返回周中的一天 (0 ~ 6)。 |
getUTCFullYear() | 根據世界時從 Date 對象返回四位數的年份。 |
getUTCHours() | 根據世界時返回 Date 對象的小時 (0 ~ 23)。 |
getUTCMilliseconds() | 根據世界時返回 Date 對象的毫秒(0 ~ 999)。 |
getUTCMinutes() | 根據世界時返回 Date 對象的分鐘 (0 ~ 59)。 |
getUTCMonth() | 根據世界時從 Date 對象返回月份 (0 ~ 11)。 |
getUTCSeconds() | 根據世界時返回 Date 對象的秒鐘 (0 ~ 59)。 |
getYear() | 已廢棄。 請使用 getFullYear() 方法代替。 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒數。 |
setDate() | 設置 Date 對象中月的某一天 (1 ~ 31)。 |
setFullYear() | 設置 Date 對象中的年份(四位數字)。 |
setHours() | 設置 Date 對象中的小時 (0 ~ 23)。 |
setMilliseconds() | 設置 Date 對象中的毫秒 (0 ~ 999)。 |
setMinutes() | 設置 Date 對象中的分鐘 (0 ~ 59)。 |
setMonth() | 設置 Date 對象中月份 (0 ~ 11)。 |
setSeconds() | 設置 Date 對象中的秒鐘 (0 ~ 59)。 |
setTime() | setTime() 方法以毫秒設置 Date 對象。 |
setUTCDate() | 根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。 |
setUTCFullYear() | 根據世界時設置 Date 對象中的年份(四位數字)。 |
setUTCHours() | 根據世界時設置 Date 對象中的小時 (0 ~ 23)。 |
setUTCMilliseconds() | 根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。 |
setUTCMinutes() | 根據世界時設置 Date 對象中的分鐘 (0 ~ 59)。 |
setUTCMonth() | 根據世界時設置 Date 對象中的月份 (0 ~ 11)。 |
setUTCSeconds() | setUTCSeconds() 方法用于根據世界時 (UTC) 設置指定時間的秒字段。 |
setYear() | 已廢棄。請使用 setFullYear() 方法代替。 |
toDateString() | 把 Date 對象的日期部分轉換為字符串。 |
toGMTString() | 已廢棄。請使用 toUTCString() 方法代替。 |
toISOString() | 使用 ISO 標準返回字符串的日期格式。 |
toJSON() | 以 JSON 數據格式返回日期字符串。 |
toLocaleDateString() | 根據本地時間格式,把 Date 對象的日期部分轉換為字符串。 |
toLocaleTimeString() | 根據本地時間格式,把 Date 對象的時間部分轉換為字符串。 |
toLocaleString() | 據本地時間格式,把 Date 對象轉換為字符串。 |
toString() | 把 Date 對象轉換為字符串。 |
toTimeString() | 把 Date 對象的時間部分轉換為字符串。 |
toUTCString() | 根據世界時,把 Date 對象轉換為字符串。 |
UTC() | 根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數。 |
valueOf() | 返回 Date 對象的原始值。 |
*請認真填寫需求信息,我們會在24小時內與您取得聯系。