成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

超輕量級(jí)的js時(shí)間庫(kù)miment使用解析

介紹

目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、竹溪網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Miment 是一個(gè)輕量級(jí)的時(shí)間庫(kù)(打包壓縮后只有1K),沒(méi)有太多的方法,

Miment的設(shè)計(jì)理念就是讓你以幾乎為零的成本快速上手,無(wú)需一遍一遍的擼文檔

由來(lái)

首先 致敬一下Moment,非常好用的一個(gè)時(shí)間庫(kù),我本身也是Moment重度使用者,用習(xí)慣了Moment,一碰到需要處理時(shí)間的需求,立馬Moment,不過(guò)有時(shí)候想想,Moment給我們提供了那么多的功能,但是我們天天用的,也就那么一兩個(gè),剛好最近在寫(xiě)微信小程序,然后在頁(yè)面引入Moment,打包完,包竟然大了200多K,把Moment去掉,就直接少掉200多K,反復(fù)試了好幾次,確定一個(gè)Moment在小程序里面,占用大概200K的空間。

于是就想自己寫(xiě)一個(gè)類(lèi)似Moment的精簡(jiǎn)的時(shí)間庫(kù),于是就有了這個(gè),為什么要叫Miment呢,其實(shí)剛開(kāi)始我是想叫Mini-Moment的,但是考慮到以后可能會(huì)經(jīng)常使用到,打2個(gè)單詞中間還要加一個(gè)下劃線(xiàn)太累了,所以就把Mini-Moment縮水成Miment了。

開(kāi)始使用

如果你是直接在瀏覽器里面使用,請(qǐng)下載./dist/miment-min.js到你的項(xiàng)目里面去,然后在頁(yè)面引入后即可直接使用miment

<script src='你js存放的目錄/miment-min.js'> </script>
<script>
  miment().format() // 2018-04-09 23:01:58 這是我寫(xiě)這篇文檔的時(shí)候,運(yùn)行代碼顯示的時(shí)間
</script>

如果你是在單頁(yè)面應(yīng)用或者nodejs環(huán)境下使用,首先你需要使用安裝一下Miment

npm i miment

或者

yarn add miment

然后就可以在你的項(xiàng)目中使用了

import miment from 'miment'
miment().format()

API

你也可以猛戳這里看example

API 分為3大類(lèi)

  • 第一類(lèi)是返回其他對(duì)象的,比如format,返回的是字符串 json返回的是一個(gè)josn
  • 第二類(lèi)是返回miment對(duì)象的,你可以在調(diào)完一個(gè)api后面繼續(xù)調(diào)用另一個(gè)api,也就是我們所說(shuō)的鏈?zhǔn)秸{(diào)用
  • 第三類(lèi)是從Date對(duì)象繼承的,也就是說(shuō)Date對(duì)象有的方法,miment也同樣有,該類(lèi)方法建議盡量少用

第一類(lèi)

1.format 格式化時(shí)間 ,format方法也就是我們平時(shí)最常用的一個(gè)了,他一共接收2個(gè)參數(shù),這2個(gè)參數(shù)都有默認(rèn)值,不傳就使用默認(rèn)值

參數(shù)名稱(chēng)參數(shù)類(lèi)型參數(shù)默認(rèn)值是否必傳說(shuō)明
格式化的字符串string'YYYY-MM-DD hh:mm:ss'N年YYYY,月MM,日DD,時(shí)hh,分mm,秒ss,毫秒SSS,數(shù)字星期ww,中文星期WW
是否是格式化一個(gè)時(shí)間差booleanfalseN比如你要計(jì)算的時(shí)間是一個(gè)倒計(jì)時(shí),這個(gè)時(shí)候也就需要傳true

本著簡(jiǎn)單的原則,這里格式化方式?jīng)]有做的太靈活,有時(shí)候靈活也是一種學(xué)習(xí)成本,因?yàn)槟阈枰浐芏嗟挠梅ǎ皇菃幔?

注意格式化字符串區(qū)分大小寫(xiě),記的技巧是大的單位大寫(xiě) YYYY MM DD,小的單位小寫(xiě) hh mm ss 毫秒跟星期特殊的單獨(dú)記,

參數(shù)必須嚴(yán)格按照說(shuō)明里面的填寫(xiě),多一個(gè)或者少一個(gè)都認(rèn)不到,比如YYYY寫(xiě)成YYY或者YY這樣是識(shí)別不了的

第二個(gè)參數(shù)的用法可以參考 distance函數(shù)

示例

 miment().format('YYYY年MM月DD日 hh:mm:ss') // 2018-04-09 23:49:36
 miment().format('YYYY/MM/DD hh-mm-ss SSS') // 2018/04/09 23-49-36 568
 miment().format('YYYY年MM月DD日 星期WW')   // 2018年04月09日 星期一
 miment().format('YYYY年MM月DD日 星期ww')   // 2018年04月09日 星期1 (星期日這邊會(huì)顯示星期0)

擴(kuò)展一下,如果我們只是想獲取年份或者月份或者日,可以這樣用

 miment().format('YYYY')  // 2018
 miment().format('MM')   // 04
 miment().format('DD')   // 09
 miment().format('hh')   // 23
 miment().format('mm')   // 57
 miment().format('ss')   // 16
 miment().format('SSS')  // 063
 miment().format('ww')   // 1
 miment().format('WW')   // 一

所以,有了這個(gè)方法,其實(shí)你可以不需要去記大部分原生的方法(getFUllYear,getDate,getDay...),所有的需求一個(gè)format搞定,

這就是我們追求的極簡(jiǎn),當(dāng)然,也會(huì)有一丟丟的性能損失,不過(guò)個(gè)人覺(jué)得對(duì)于當(dāng)今的硬件設(shè)備,你完全可以忽略這一點(diǎn)點(diǎn)性能。除非你的項(xiàng)目很特殊。

2.json 輸出json格式的時(shí)間,不需要參數(shù)

直接上代碼

 miment().json()

看輸出

 {
   "year": 2018,
   "month": 4,
   "date": 11,
   "hour": 8,
   "minute": 57,
   "second": 41,
   "day": 3,
   "milliSecond": 87
 }

輸出內(nèi)容比較簡(jiǎn)單,應(yīng)該很好理解,這里就不對(duì)輸出做介紹了,day返回的是星期幾,從0-星期天 1-星期一,以此類(lèi)推

3.stamp 輸出時(shí)間戳,不需要參數(shù)

 miment().stamp()

看輸出

1523408529932

會(huì)輸出一串代表當(dāng)前時(shí)間的數(shù)字,這個(gè)對(duì)前端基本沒(méi)啥用,不過(guò)有時(shí)候后端的同學(xué)會(huì)要求傳這個(gè)

4.daysInMonth 獲取當(dāng)前月的天數(shù),不需要參數(shù)

  miment().daysInMonth()  // 30

第二類(lèi)

5.add 增加或減少時(shí)間,它接收2個(gè)參數(shù)

參數(shù)名稱(chēng)參數(shù)類(lèi)型參數(shù)默認(rèn)值是否必傳說(shuō)明
增量number0N要增加的時(shí)間量,增加傳正數(shù),減少傳負(fù)數(shù)
增量單位string無(wú)默認(rèn)值Y要增加的時(shí)間單位,可選有YYYY MM DD hh mm ss SSS ww WW

單位 的可選參數(shù)跟格式化方法format的類(lèi)似,這么做也是為了方便記憶,只需要記一套方案

同樣地 單位也區(qū)分大小寫(xiě),記的技巧是大的單位大寫(xiě) YYYY MM DD,小的單位小寫(xiě) hh mm ss 毫秒跟星期特殊的單獨(dú)記,
參數(shù)必須嚴(yán)格按照說(shuō)明里面的填寫(xiě),多一個(gè)或者少一個(gè)都認(rèn)不到,比如YYYY寫(xiě)成YYY或者YY這樣是識(shí)別不了的

 miment().add(1,'DD') // 增加一天
 miment().add(1,'YYYY').add(2,'MM').add(-3,'DD') // 增加1年2個(gè)月又減回去3天
 miment().add(-1,'ww') // 減去一周 --即獲取上周的日期
 miment().add(500,SSS) // 增加500毫秒

add返回的值是增加完后的miment對(duì)象,所以我們可以在它后面繼續(xù)調(diào)用miment有的方法。

 miment().add(1,'DD').format()  // 我測(cè)試的時(shí)候,打印的是 2018-04-12 09:29:55

需要注意的是,當(dāng)你調(diào)完第一類(lèi)的方法以后,返回的就不是miment對(duì)象了,比如format返回的是一個(gè)字符串,這個(gè)時(shí)候你就不能再調(diào)用miment上的方法了,

會(huì)報(bào)錯(cuò) Uncaught TypeError: miment(...).format(...).xxx is not a function 因?yàn)樽址脑蜕厦鏇](méi)有這個(gè)方法

 miment().add(1,'DD').format().add(1,'DD') // 報(bào)錯(cuò)

6.distance 計(jì)算2個(gè)時(shí)間的距離 接收2個(gè)參數(shù),返回一個(gè)miment對(duì)象

參數(shù)名稱(chēng)參數(shù)類(lèi)型參數(shù)默認(rèn)值是否必傳說(shuō)明
起始時(shí)間miment/date/number/string無(wú)Y接受4種類(lèi)型參數(shù),會(huì)自動(dòng)轉(zhuǎn)換
結(jié)束時(shí)間miment/date/number/string無(wú)N同上

只傳一個(gè)起始時(shí)間的時(shí)候,返回 起始時(shí)間 - miment當(dāng)前時(shí)間

起始時(shí)間和結(jié)束時(shí)間都有傳的時(shí)候,返回 起始時(shí)間 - 結(jié)束時(shí)間

 miment().distance('2018-04-10 00:00:00') // Mon Dec 29 1969 22:11:51 GMT+0800 (CST)
 miment().distance(1523408529932)     // Wed Dec 31 1969 07:13:47 GMT+0800 (CST)
 miment().distance('2018-04-10 00:00:00', new Date()) //Mon Dec 29 1969 22:11:13 GMT+0800 (CST)
 miment().distance('2018-04-10 00:00:00', '2018-04-11 00:00:00') //Mon Dec 29 1969 22:10:46 GMT+0800 (CST)

你一定注意到了,distance方法返回的時(shí)間,竟然都是1969年的? 這實(shí)際上是基于1970-01-01 00:00:00的一個(gè)毫秒數(shù),
具體請(qǐng)看 百度百科-unix時(shí)間,

而我們把兩個(gè)時(shí)間相減,得到的可能是一個(gè)相對(duì)來(lái)說(shuō)很小的數(shù)(還有可能是負(fù)數(shù)),所以離1970很近

那我們要怎么顯示我們能看得懂的時(shí)間呢? 很簡(jiǎn)單 用格式化時(shí)間函數(shù)format,還記得format函數(shù)的第二個(gè)參數(shù)嗎?

就是專(zhuān)門(mén)用來(lái)格式化distance計(jì)算出來(lái)的時(shí)間差,只要把第二個(gè)參數(shù)設(shè)為true,就能把當(dāng)前時(shí)間格式化成時(shí)間差
我們先來(lái)看看第二個(gè)參數(shù)不傳,或者傳false的時(shí)候是什么樣子的

 miment().distance(1523408529932).format('YYYY年MM月DD日 hh時(shí)mm分ss秒')    // 1969年12月30日 00時(shí)52分16秒
 miment().distance(1523408529932).format('YYYY年MM月DD日 hh時(shí)mm分ss秒',false) // 1969年12月30日 00時(shí)52分16秒

然后我們把第二個(gè)參數(shù)設(shè)為true

 miment().distance(1523408529932).format('YYYY年MM月DD日 hh時(shí)mm分ss秒',true) // 00年01月03日 23時(shí)08分23秒

7.firstDayOfWeek 獲取 本周的第一天(周日) 不需要參數(shù)

  miment().firstDayOfWeek()      // Sun Apr 08 2018 11:27:55 GMT+0800 (CST)
  miment().firstDayOfWeek().format() // 2018-04-08 11:27:55

如果想獲取周一呢?周二、三、四、五、六呢?

  miment().firstDayOfWeek().add(1,'DD').format() // 2018-04-09 11:27:55

8.firstDay 獲取每個(gè)月的第一天 不需要參數(shù)

 miment().firstDay()      // Sun Apr 01 2018 00:00:00 GMT+0800 (CST)
 miment().firstDay().format() // 2018-04-01 00:00:00

9.lastDay 獲取每個(gè)月的最后一天 不需要參數(shù)

 miment().lastDay()      // Mon Apr 30 2018 00:00:00 GMT+0800 (CST)
 miment().lastDay().format() // 2018-04-30 00:00:00

第三類(lèi)

10.Date自帶方法 miment繼承自Date對(duì)象,所以也擁有Date對(duì)象的所有方法,這里就不做深入講解,需要更多關(guān)于Date對(duì)象的說(shuō)明,

請(qǐng)移步至MDN查看

不過(guò)需要注意的是,由于繼承而來(lái)的方法是屬于Date對(duì)象的,為了保持一致,我們沒(méi)有去對(duì)方法做改動(dòng),所以方法無(wú)法返回miment對(duì)象,也就是說(shuō)無(wú)法鏈?zhǔn)秸{(diào)用miment

寫(xiě)在最后

目前這些功能(函數(shù)),是我們團(tuán)隊(duì)在日常實(shí)踐中碰到的比較常用的,如果你對(duì)功能有新的需求或者建議,

歡迎給我們提Issue,如果喜歡miment,

請(qǐng)?jiān)谖业膅ithub上給我一個(gè)star,你的star就是我最大的動(dòng)力了,謝謝!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享文章:超輕量級(jí)的js時(shí)間庫(kù)miment使用解析
本文來(lái)源:http://jinyejixie.com/article8/psphop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、軟件開(kāi)發(fā)自適應(yīng)網(wǎng)站、網(wǎng)站策劃、電子商務(wù)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
康平县| 西乌珠穆沁旗| 饶河县| 儋州市| 巩留县| 瓦房店市| 昭觉县| 凯里市| 西安市| 衡南县| 界首市| 武安市| 东辽县| 隆化县| 沅江市| 佛教| 余庆县| 涟源市| 饶河县| 德庆县| 扎鲁特旗| 军事| 泉州市| 道真| 通州区| 怀仁县| 古丈县| 云龙县| 甘孜| 旅游| 安图县| 南阳市| 青阳县| 瑞昌市| 东至县| 芦溪县| 清水河县| 怀集县| 博爱县| 高青县| 介休市|