【问题标题】:String to date in TypeScriptTypeScript 中的迄今为止的字符串
【发布时间】:2018-07-15 19:49:31
【问题描述】:

我有一个带有 '20180715' 对象的 JSON 响应,我需要将 string 转换为 date,例如:

let dateString = '20180715';

我试过日期testdate = new Date (dateString); //失败。

如何在 TypeScript 中将其转换为日期对象?

提前致谢!

【问题讨论】:

    标签: javascript string typescript date


    【解决方案1】:

    如果字符串中日期的实际结构没有改变,您可以简单地使用.substr函数获取字符串的各个部分。

    请记住,month is 0-based,因此月份必须减少 1。

    const dateString = '20180715';
    const year = dateString.substr(0, 4);
    const month = dateString.substr(4, 2) - 1;
    const day = dateString.substr(6, 2);
    const date = new Date(year, month, day);
    
    console.log(date.toString());

    【讨论】:

    • 谢谢瑞克!是的,日期字符串的结构是相同的。这很完美!谢谢。
    【解决方案2】:

    您也可以使用 RegEx 进行解析。请注意月份的递减运算符 (--),因为 Date 将月份索引为 0。有关更高级的内容,请参阅 moment.js,其中包含许多格式模板。

    const re  = /(\d{4})(\d{2})(\d{2})/;
    const str = '20180715';
    if (re.test(str)) {
      const dt = new Date(RegExp.$1, --RegExp.$2, RegExp.$3);
      console.log(dt);
    }

    【讨论】:

    • 这是对后减运算符的滥用。 RegExp.$2 - 1 好多了。
    • @SalmanA 也可以,但这不是对后运算符的滥用,它是前运算符,这是在操作顺序很重要时使用的一种方式.其他解决方案(例如您的解决方案)也可以使用 - 这样做的决定取决于偏好和样式指南。
    猜你喜欢
    • 2011-04-18
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多