5Mi / wumi_blog

for recording improvimg my experience
21 stars 0 forks source link

js Date #41

Open 5Mi opened 8 years ago

5Mi commented 8 years ago

JS Date 对象用于处理日期和时间。

var myDate=new Date()

new Date("January 12,2006 22:19:35");

new Date("January 12,2006");

new Date(2006,0,12,22,19,35);

new Date(2006,0,12);

new Date(1137075575000);

ios中 new Date() 不支持类似1990-12-1这种格式 需转换为类似1990/12/1 项目中

//this.order.orderCompletedTime 为类似'2016-09-11 12:03:12'
new Date(this.order.orderCompletedTime.replace(/-/g, "/"))

获取某个月的天数

function getDays(year, month) {
  return new Date(year, month + 1, 0).getDate();
}

利用toLocaleString格式化日期

var date = new Date();
var result = date.toLocaleString('zh-CN', { hour12: false })
  .replace(/\//g, '-').replace(/\b\d\b/g, '0$&');

和这里 参考

iTaster commented 5 years ago

正则表达式命名捕获组 编号的捕获组 //正则表达式命名捕获组 const RE_DATE = /([0-9]{4})-([0-9]{2})-([0-9]{2})/;

const matchObj = RE_DATE.exec('1999-12-31'); const year = matchObj[1]; // 1999 const month = matchObj[2]; // 12 const day = matchObj[3]; // 31 复制代码通过数字引用捕获组有几个缺点:

找到捕获组的数量是一件麻烦事:必须使用括号。 如果要了解组的用途,则需要查看正则表达式。 如果更改捕获组的顺序,则还必须更改匹配代码。

命名的捕获组 ES9中可以通过名称来识别捕获组:(?[0-9]{4}) 在这里,我们用名称标记了前一个捕获组year。该名称必须是合法的JavaScript标识符(认为变量名称或属性名称)。匹配后,您可以通过访问捕获的字符串matchObj.groups.year来访问。 让我们重写前面的代码: const RE_DATE = /(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/;

const matchObj = RE_DATE.exec('1999-12-31'); const year = matchObj.groups.year; // 1999 const month = matchObj.groups.month; // 12 const day = matchObj.groups.day; // 31

// 使用解构语法更为简便 const {groups: {day, year}} = RE_DATE.exec('1999-12-31'); console.log(year); // 1999 console.log(day); // 31 复制代码可以发现,命名捕获组有以下优点:

找到捕获组的“ID”更容易。 匹配代码变为自描述性的,因为捕获组的ID描述了正在捕获的内容。 如果更改捕获组的顺序,则无需更改匹配代码。 捕获组的名称也使正则表达式更容易理解,因为您可以直接看到每个组的用途。

作者:拓跋zhleven 链接:https://juejin.im/post/5bfe003f5188252bf829c3fb 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。