日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

模块开发之时间/日期组件moment.js使用(十四)

發布時間:2023/12/4 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 模块开发之时间/日期组件moment.js使用(十四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 基本使用
    • moment與字符串想到轉換
    • 當前時間
  • 語法
    • 創建moment實例的方式
      • 時間字符串+指定格式
      • 時間字符串+多定格式
      • moment完全支持iso-8601格式字符串
      • 以對象形勢創建,這很重要
      • 傳入date對象
  • 接收數組
    • moment默認值
      • 不傳任何參數即是當前時間
      • 怎樣的默認值
  • 對moment時間的操作
    • get/set方法
    • 時間的加減操作
      • 加法
      • 減法
    • 指定格式的開始時間和結束時間
    • 兩個moment的比較
    • moment比較大小
  • ISO 8601時間以及時間里T和Z了解
  • 格式化
    • moment幫我們設置了一些長日期格式


模塊開發之時間/日期組件moment.js使用(十四)

前言

moment.js框架是我見過的處理日期和時間最好的工具,再也不用自己寫個類處理日期格式了,放棄Date和calendar的處理吧

基本使用

moment與字符串想到轉換

一個基本的使用方式也是常用的方式是怎么把日期字符串轉成moment方式,同時將moment對象顯示成我們想要的方式
比如

const moment = require('moment')
//字符串轉換成moment
let a = moment("2018-08-29 12:13:14", "YYYY-MM-DD hh:mm:ss")
//moment轉換成字符串
console.log(a.format("YYYY-MM-DD hh:mm:ss"))

這是基本使用方式.
let a = moment(“2018-08-29 12:13:14”, “YYYY-MM-DD hh:mm:ss”):moment()構造函數第一個參數是時間日期,第二個參數是傳入的時間日期的格式,方便moment解析。
a.format(“YYYY-MM-DD hh:mm:ss”):是將moment實例以我們想格式化的形勢展示,"YYYY-MM-DD hh:mm:ss"這個即是展示形勢。當然我們可以組合很多種。后面會講到。

當前時間

不傳任何參數即表示當前時間。如下

let a = moment()
console.log(a.format("YYYY-MM-DD hh:mm:ss"))

輸出:2018-09-20 02:03:12

語法

創建moment實例的方式

時間字符串+指定格式

語法

moment(String, String);//時間,格式
moment(String, String, String);//時間,格式
moment(String, String, Boolean);//時間,格式,嚴格模式
moment(String, String, String, Boolean);//時間,格式,國際化(比如“zh-cn”)嚴格模式

例子

const moment = require('moment')
let a = moment("2018-09-05","YYYYMMDD")
console.log(a.format("YYYYMMDD hh:mm:ss"))

輸出:20180905 12:00:00

const moment = require('moment')
let a = moment("2018-09-05","YYYY-MM-DD")
console.log(a.format("YYYYMMDD hh:mm:ss"))

輸出:20180905 12:00:00
moment在解析時遇到字符串里的非字母和數字時,默認忽略不解析,所以YYYYMMDD"YYYY-MM-DD"是一樣效果

const moment = require('moment')
let a = moment("05","DD")
console.log(a.format("YYYYMMDD hh:mm:ss"))

輸出:20180905 12:00:00

時間字符串+多定格式

如果我們不知道傳入的時間字符串是什么格式,但肯定知道是其中一種,我們所以用數組指定格式。

const moment = require('moment')
let a = moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"],"zh-cn",true);
console.log(a.format("YYYYMMDD hh:mm:ssa"))

輸出:19951225 12:00:00凌晨

moment完全支持iso-8601格式字符串

比如

moment("2010-01-01T05:06:07", moment.ISO_8601);moment("2010-01-01T05:06:07", ["YYYY", moment.ISO_8601]);

以對象形勢創建,這很重要

例如

moment({ y    :2010, M     :3, d   :5, h    :15, m      :10, s      :3, ms          :123});
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
moment({ years:2010, months:3, days:5, hours:15, minutes:10, seconds:3, milliseconds:123});

在moment里y,year,years是等價的,所以傳任何一種都可以。同時d,day,days一樣,其它亦是如此
這里會涉及到默認值情況,比如我們只傳hour或day會怎樣。

傳入date對象

var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);
console.log(dayWrapper.format("YYYYMMDD hh:mm:ssa"))//輸出20111016 12:00:00am

這樣我們就可以將Date轉換成moment對象了

接收數組

這種方式不靈活,必需按年月日順序組織數組,幾乎不用,貼個例子

moment([2010, 6, 10]);

moment默認值

不傳任何參數即是當前時間

moment();

怎樣的默認值

2018-09-20 10:10:10:123為例
如果只傳hour,那么時間的左邊會是當前時間年月時,hour右邊的則默認是0

let a = moment("10", "hh");
console.log(a.format("YYYYMMDD hh:mm:ssa"))//輸出20180920 10:00:00am
let a = moment("10", "DD");
console.log(a.format("YYYYMMDD hh:mm:ssa"))//20180910 12:00:00am

day的左邊是當前時間的年月,右邊默認是0時間,注意上面的凌晨12點,也就是一天開始時間0點

對moment時間的操作

get/set方法

獲取對象值get方法

const moment = require('moment')
var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);
console.log("y=" + dayWrapper.get('y'))
console.log("year=" + dayWrapper.get('year'))
console.log("years=" + dayWrapper.get('years'))

輸出
y=2011 year=2011 years=2011

對應的set方法

const moment = require('moment')
var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);
dayWrapper.set('y',2012)
//dayWrapper.get('year',2012)
//dayWrapper.get('years',2012)
console.log("resutl:" + dayWrapper.format("YYYY-MM-DD hh:mm:ss:ms"))

輸出結果:resutl:2012-10-16 12:00:00:00

其它的簡寫如下

字符 描述
y/year/years
M/month/months
d/day/days
h/hour/hours
m/minute/minutes
s/second/seconds
ms/millisecond/milliseconds 毫秒
w/week/weeks
Q/quarter/quarters 季度

時間的加減操作

加法

語法

moment().add(Number, String);
moment().add(Duration);//持續時間
moment().add(Object);

這個很簡單,對應三個例子

moment().add(7, 'days').add(1, 'months');
moment().add({days:7,months:1});
moment([2012, 0, 31]).add(moment.duration({'days' : 1}));

當前如果將值變成負數則和減法功能一樣的。

減法

和加法是對應的,語法

moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);

例子

moment().subtract(7, 'days');
moment().subtract({days:7,months:1});
moment([2012, 0, 31]).subtract(moment.duration({'days' : 1}));

指定格式的開始時間和結束時間

moment().startOf(String):修改了moment實例的時間,指向開始
moment().endOf(String):修改了moment實例的時間,指向結束

var str = "YYYY-MM-DD hh:mm:ms"
var a = moment("2019-2-20 13:13:13",str)
console.log("本月開始日期" + a.startOf("M").format(str))

輸出:

本月開始日期2019-02-01 12:00:00
本月結束日期2019-02-28 11:59:59

兩個moment的比較

不僅僅限于moment的比較,其它格式同樣適合

  • 最大值:moment().max(Moment|String|Number|Date|Array);
  • 最小值:moment().min(Moment|String|Number|Date|Array);

moment比較大小

moment().isBefore(Moment|String|Number|Date|Array):是否之前
moment().isSame(Moment|String|Number|Date|Array):是否相同
moment().isAfter(Moment|String|Number|Date|Array):是否之后
moment().isBetween(moment-like, moment-like):是否之間
參考官司網查詢

ISO 8601時間以及時間里T和Z了解

具體對UTC的了解可百度一下ISO 8601 ,北京時間比較ISO 8601時間要快,也就是說ISO 8601時間+8houre=北京時間
T是日期和時間之間的特殊字符,功能和空格一樣,起分隔作用。比如
2018-09-28T01:52:352018-09-28 01:52:35是等價功能。

Z表示時間是ISO 8601格式時間
比如:

var a2 = moment("2018-09-28T14:52:35Z")
console.log("a2:" + a2.format())

輸出a2:2018-09-28T22:52:35+08:00
ISO 8601時間+8houre=北京時間公式一樣,當前時間其實是2018-09-28 22:52:35,字符串后面+08:00``是ISO 8601時間偏移量即8小時。
對比如下
ISO 8601格式如下:2018-09-28T14:52:35Z
中國標準時間(UTC時間):a2:2018-09-28T22:52:35+08:00

格式化

重量及選手,為什么"YYYY-MM-DD HH:mm:ss"就能展示2018-09-28 14:52:35

縮寫 輸出結果
Month M
Mo
MM
MMM
MMMM
Quarter Q
Day of Month D
Do
DD
Day of Year DDD
DDDo
DDDD
Day of Week d
do
dd
ddd
dddd
Day of Week (Locale) e
Day of Week (ISO) E 1 2 … 6 7
Week of Year w
wo
ww
Week of Year (ISO) W
Wo
WW
Year YY
YYYY
Week Year gg 70 71 … 29 30
gggg
Week Year (ISO) GG
GGGG
AM/PM A
a
Hour H
HH
h
hh
Minute m
mm
Second s
ss
Fractional Second S
SS
SSS
SSSS … SSSSSSSSS
Z -07:00 -06:00 … +06:00 +07:00
Unix Timestamp X
Unix Millisecond Timestamp x 1360013296123

moment幫我們設置了一些長日期格式

縮寫 組合
LT h:mm A
LTS h:mm:ss A
L MM/DD/YYYY
l M/D/YYYY
LL MMMM Do YYYY
ll MMM D YYYY
LLL MMMM Do YYYY LT
lll MMM D YYYY LT
LLLL dddd, MMMM Do YYYY LT
llll ddd, MMM D YYYY LT

效果如下

moment().format('L');    // 2018-09-20
moment().format('l');    // 2018-09-20
moment().format('LL');   // 2018年9月20日
moment().format('ll');   // 2018年9月20日
moment().format('LLL');  // 2018年9月20日下午4點26分
moment().format('lll');  // 2018年9月20日下午4點26分
moment().format('LLLL'); // 2018年9月20日星期四下午4點26分
moment().format('llll'); // 2018年9月20日星期四下午4點26分

#全部設置語言
使用moment.locale(語言)設置,moment().lang(String)在2.8.1被廢棄了

moment.locale('en');
moment.locale('zh-cn');

參考官方能獲得更高知識
中文官網首頁
中文官網文檔

總結

以上是生活随笔為你收集整理的模块开发之时间/日期组件moment.js使用(十四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。