【问题标题】:Why is it returning undefined for the month. JS date为什么它在本月返回未定义。 JS日期
【发布时间】:2022-01-11 09:47:58
【问题描述】:
var date = new Date();
var month = date.getMonth();
var arr = [
   'лютого',
   'березня',
   'квітня',
   'травня',
   'червня',
   'липня',
   'серпня',
   'вересня',
   'жовтня',
   'листопада',
   'грудня',
   'січня',
];

$('.rf_title').text('Данi оновлено ' + date.getDate() + ' ' + arr[month-1] + ' ' + date.getFullYear() +' о ' + (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':' + '' + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())); 

我很困惑为什么这显示为未定义。它工作得很好,直到新年。 2022 年一到就结束了。enter image description here

【问题讨论】:

  • getMonth() 返回零索引月份。不需要-1
  • date.getMonth() 会给你 0 到 11。其余的我相信你可以推断出来。
  • 您可以使用 ... + arr[(month? month : arr.length) - 1] + ...,这样如果 month 为零(一月),则表达式返回十二月的值。
  • 请注意,乌克兰语的语言代码是 uk-UA,因此您可以将月份名称设为 new Date().toLocaleString('uk-UA',{month:'long'})(当前为“січень”)并省去一些麻烦。 :-)
  • 如果对您有帮助,请采纳答案:)

标签: javascript html date undefined


【解决方案1】:

getMonth() 方法根据本地时间返回指定日期中的月份,作为从零开始的值(其中零表示一年中的第一个月)。所以现在在一月份它返回 0。arr[month-1] 将是 arr[-1],这是未定义的。

【讨论】:

    【解决方案2】:

    月份是 0-index,因此删除 month-1 中的 -1 将起作用(如果将一月移动到数组的开头)。

    从现在一月份开始,它将使用-1,这是不正确的。

    getMonth() 方法根据本地时间返回指定日期中的月份,作为从零开始的值(其中零表示一年中的第一个月)。

    正确的做法:

    var date = new Date();
    var month = date.getMonth();
    var arr = [
       'січня',
       'лютого',
       'березня',
       'квітня',
       'травня',
       'червня',
       'липня',
       'серпня',
       'вересня',
       'жовтня',
       'листопада',
       'грудня',
    ];
    console.log(arr[month])
    $('.rf_title').text('Данi оновлено ' + date.getDate() + ' ' + arr[month] + ' ' + date.getFullYear() +' о ' + (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':' + '' + (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes())); 
    &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

    【讨论】:

    • OP 想要获取上个月的名称,所以你的答案应该告诉他们如何做到这一点(例如arr[(month || arr.length) - 1])。 :-)
    • @RobG,我认为OP要求I’m confused as to why this is showing undefined.,所以我主要解释一下。此外,下面的代码 sn-p 确实显示了正确的方法。我不认为我的回答是题外话,但无论如何,我会更新下面的答案是正确的。
    • @RobG 不,他们想要当前月份。在前几个月运行良好之后,他们抱怨代码在 1 月份被破坏。他们目前有一个从 2 月开始到 1 月结束的数组,因此它已经在除 1 月之外的所有月份正常工作。
    • 原始代码arr[month-1] 显示上个月,并且“工作正常,直到新年”,因此可以合理地预期上个月是必需的。否则它不会“正常工作”,因为“січня”是一月份的乌克兰语。
    • @RobG,我同意你的观点,并没有注意到问题中的这一点,但我认为这是由 OP 引起的,并不是真的月份是 0-index,所以这就是为什么我的回答主要是专注于此。:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2017-09-05
    • 2014-10-24
    • 2021-12-11
    • 2019-08-21
    • 1970-01-01
    相关资源
    最近更新 更多