【问题标题】:How to get last 2 digits of year from Javascript date [duplicate]如何从Javascript日期获取年份的最后2位数字[重复]
【发布时间】:2020-03-24 20:38:02
【问题描述】:

我有以下格式的字符串“30.11.2019”。我需要将其转换为日期并获得短年份表示(年份的最后 2 位数字),如“19”。 以下代码不起作用

var strDate = new Date("30.11.2019");
var shortYear = strDate.getFullYear(); 

【问题讨论】:

  • 简单的模100运算

标签: javascript string date formatting format


【解决方案1】:

您可以使用以下代码获取最后两位数:

var strDate = new Date(); // By default Date empty constructor give you Date.now
var shortYear = strDate.getFullYear(); 
// Add this line
var twoDigitYear = shortYear.toString().substr(-2);

【讨论】:

    【解决方案2】:

    new Date() 不适用于该格式的单个字符串参数。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

    最简单的方法是使用 3 个参数(年、月、日)调用它。 请注意,month 是月份索引(基于 0),因此 11 月(第 11 个月)实际上是 Date 预期格式的第 10 个月。

      new Date(2019, 10, 30).getFullYear() % 100;
      // returns 19;
    

    如果你不能这样做,你只需要解决上面提到的字符串格式,那么你可以这样做

    const dateString = '30.11.2019';
    const year = dateString.substring(dateString.length-2);
    

    【讨论】:

      【解决方案3】:

      我不完全确定您是否只想简短地表示年份或整个日期,但要简短地表示年份 - 如果是这样,那么我建议使用 toLocaleDateString 方法:

      new Date(2019, 10, 30).toLocaleDateString('pl', {day: 'numeric', month: 'numeric', year: '2-digit'})
      

      它会返回你:

      "30.11.19"
      

      或者如果您只想获取较短的年份日期:

      new Date(2019, 10, 30).toLocaleDateString('en', {year: '2-digit'})
      

      它会返回你:

      "19"
      

      【讨论】:

      • +1 用于使用 .toLocaleDateString() 这就是它的目的。
      【解决方案4】:
      var strDate = "30.11.2019";
      var lastdigit = strDate.slice(-2);
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值.
      【解决方案5】:

      由于您使用的字符串不是Date.parse()(更多关于here)识别的格式,您需要手动创建该日期对象。

      例如:

      const strDate = '30.11.2019';
      let [d,m,y] = strDate.split(/\D/);
      const date = new Date(y, --m, d);
      
      console.log(date.getFullYear())

      然后您可以根据需要使用Date.getFullYear() 获取年份并提取最后两位数字。

      【讨论】:

      • @RobG 更优雅!相应地更新答案:)
      • 为什么需要 --m in new Date(y, --m, d)
      • @ndrewl Date() 的第二个参数是一个表示月份的整数值,从 0 开始表示 1 月到 11 表示 12 月。由于原始字符串中月份的数字表示以一月的 1 开头,因此在将其传递给 Date() 之前,我们需要将其减少 1。这能回答你的问题吗?
      • 好的,谢谢!我目前正在学习 JavaScript,对我来说,天从 1 开始,而几个月从 0 开始,这对我来说似乎有点不自然。如果其他人有兴趣,这里是参考:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
      【解决方案6】:

      我认为不需要拆分字符串。 使用moment

      yarn add moment

      const moment = require( 'moment' );
      
      const simpleYear = moment( "30.11.2019", "DD.MM.YYYY" ).format( "YY" );
      console.log( "simpleYear = " + simpleYear );
      

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 1970-01-01
        • 2021-05-04
        • 2020-03-20
        • 2021-03-12
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 2016-02-10
        相关资源
        最近更新 更多