JSRUN 用代码说话

moment(String) 带格式

编辑教程

moment(String) 带格式

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

如果知道输入字符串的格式,则可以使用它来解析 moment。

moment("12-25-1995", "MM-DD-YYYY");

解析器会忽略非字母和数字的字符,因此以下两个都将会返回相同的东西。

moment("12-25-1995", "MM-DD-YYYY");
moment("12/25/1995", "MM-DD-YYYY");

解析令牌类似于 moment#format 中使用的格式化令牌。

年份、月份、日期的令牌

令牌区分大小写。

输入 示例 描述
YYYY 2014 4 或 2 位数字的年份
YY 14 2 位数字的年份
Y -25 带有任意数字和符号的年份
Q 1..4 年份的季度。将月份设置为季度的第一个月
M MM 1..12 月份数字
MMM MMMM Jan..December 语言环境中的月份名称,由 moment.locale() 设置
D DD 1..31 月的某天
Do 1st..31st 月的某天,带序数
DDD DDDD 1..365 年的某天
X 1410715640.579 Unix 时间戳
x 1410715640579 Unix 毫秒时间戳

从版本 2.10.5 开始,YYYY 支持 2 位数字的年份,且会将其转换为接近 2000 的年份(与 YY 相同)。

Y 新增于 2.11.1 中。 它将会匹配任何数字,有符号或无符号。 对于非 4 位数字或公元前的年份很有用。 它可以用于任何年份。

周年、星期、工作日的令牌

对于这些,小写字母令牌使用语言环境感知的星期开始天数,而大写字母令牌使用 ISO 星期日期开始天数。

令牌区分大小写。

输入 示例 描述
gggg 2014 语言环境的 4 位数字的周年
gg 14 语言环境的 2 位数字的周年
w ww 1..53 语言环境的年的第几周
e 0..6 语言环境的星期几
ddd dddd Mon...Sunday 语言环境的星期几的名称,由 moment.locale() 设置
GGGG 2014 ISO 的 4 位数字的周年
GG 14 ISO 的 2 位数字的周年
W WW 1..53 ISO 的年的第几周
E 1..7 ISO 的星期几

语言环境感知的格式

使用 LT LTS L LL LLL LLLL 也可以使用语言环境感知的日期和时间格式。 它们新增于 2.2.1 版本,其中 LTS 新增于 2.8.4。

令牌区分大小写。

输入 示例 描述 L 04/09/1986 日期(以本地格式) LL September 4 1986 月份名称、月份日期、年份 LLL September 4 1986 8:30 PM 月份名称、月份日期、年份、时间 LLLL Thursday, September 4 1986 8:30 PM 星期几、月份名称、月份日期、年份、时间 LT 08:30 PM 时间(不含秒钟) LTS 08:30:00 PM 时间(含秒钟)

小时、分钟、秒种、毫秒、偏移量的令牌

令牌区分大小写。

输入 示例 描述
H HH 0..23 小时(24 小时制)
h hh 1..12 小时(使用 a A 的 12 小时制)
k kk 1..24 小时(从 1 到 24 的 24 小时制)
a A am pm 上午或下午(单一字符 a p 也被视为有效)
m mm 0..59 分钟
s ss 0..59 秒钟
S SS SSS 0..999 带分数的秒钟
Z ZZ +12:00 从 UTC 偏移为 +-HH:mm、+-HHmm 或 Z

从 2.10.5 版本开始:长度为 4 到 9 位的带分数的秒钟令牌可以解析任意数量的数字,但只会考虑前 3 个数(毫秒)。 如果需要打印带有多位分数且想要消耗输入的时间,则使用它。

注意,仅在严格模式中解析时,提供的 S 字符的数量才有意义。 在标准模式中,S、SS、SSS、SSSS 均等效,并解释为几分之一秒。 例如,.12 始终为 120 毫秒,传入 SS 不会导致其被解释为 12 毫秒。

  • Z ZZ 新增于 1.2.0 版本。
  • S SS SSS 新增于 1.6.0 版本。
  • X 新增于 2.0.0 版本。
  • k kk 新增于 2.18.0 版本。

除非指定时区偏移量,否则解析字符串将会在当前时区中创建日期。

moment("2010-10-20 4:30",       "YYYY-MM-DD HH:mm");   // 解析为当地时间 4:30。
moment("2010-10-20 4:30 +0000", "YYYY-MM-DD HH:mm Z"); // 解析为 UTC 时间 4:30。

如果 moment 解析的输入结果不存在,则 moment#isValid 将会返回 false。

moment("2010 13",           "YYYY MM").isValid();     // false(不是真实的月份)
moment("2010 11 31",        "YYYY MM DD").isValid();  // false(不是真实的日期)
moment("2010 2 29",         "YYYY MM DD").isValid();  // false(不是闰年)
moment("2010 notamonth 29", "YYYY MMM DD").isValid(); // false(不是真实的月份名称)

从 2.0.0 版本开始,可以将语言环境键作为第三个参数传给 moment() 和 moment.utc()。

moment('2012 juillet', 'YYYY MMM', 'fr');
moment('2012 July',    'YYYY MMM', 'en');

Moment 的解析器非常宽松,这可能会导致不期望或意外的行为。

例如,可以观察到以下行为:

moment('2016 is a date', 'YYYY-MM-DD').isValid() //true, 2016 被匹配。

在 2.13.0 之前,解析器会表现出以下行为。 这已得到纠正。

moment('I am spartacus', 'h:hh A').isValid();     //true - 'am' 和 'A' 标志匹配。

从 2.3.0 版本开始,可以为最后一个参数指定一个布尔值,以使 Moment 使用严格的解析。 严格的解析要求格式和输入完全匹配,包括分隔符。

moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();       // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false
moment('2012-05-25',       'YYYY-MM-DD', true).isValid(); // true
moment('2012.05.25',       'YYYY-MM-DD', true).isValid(); // false

可以同时使用语言环境和严格性。

moment('2012-10-14', 'YYYY-MM-DD', 'fr', true);

严格的解析通常是最好的解析选项。 有关选择严格还是宽松解析的更多信息,参阅解析指南。

解析两位数字的年份

默认情况下,68 之前的两位数字的年份会被假定是 1900 年代,而 68 或之后的年份则会被假定是 2000 年代。 可以通过替换 moment.parseTwoDigitYear 方法来更改。 该方法的唯一参数是包含用户输入的两位年份的字符串,并且应以整数形式返回年份。

moment.parseTwoDigitYear = function(yearString) {
    return parseInt(yearString) + 2000;
}

解析胶合的小时和分钟

从 2.11.0 版本开始,支持解析 hmm、Hmm、hmmss 和 Hmmss:

moment("123", "hmm").format("HH:mm") === "01:23"
moment("1234", "hmm").format("HH:mm") === "12:34"
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟