【问题标题】:Javascript strptime() is adding one month extraJavascript strptime() 增加了一个月
【发布时间】:2021-04-21 12:00:56
【问题描述】:

在一个 Spring 启动项目中,我们调用 GraalVM 来处理一些用 JavaScript 编写的规则。 GraalVM 版本是 'org.graalvm.sdk=1.0.0-rc11'。当我们使用strptime() 时,它会额外增加一个月。与日期 24/02/2021 一样,它转换为 24/03/2021。你能告诉我为什么会这样吗?

此处源作为源日期传递,例如 24/02/2021

const return_date = new Date().strptime(source, format(source)).toIsoString()

注意:如果我们在一个月的最后一天(例如 1 月 31 日)执行此操作,则会发生这种情况,前几天它会给我返回的预期日期。那么知道为什么strptime() 会这样吗?

【问题讨论】:

  • 源是 java.util.date.Date 吗?如果是,那么它来自 Date 的月份从 0 到 11 的事实。尝试使用 LocalData 而不是 docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html
  • 它不是 java.util.date.Date。这只是取自 json,在 JSON.parse(source[0].CREATION_DATE) 之类的 javascript 函数中。这个 javascript 由 GraalVM 执行。
  • 但是 JavaScript 日期月份也在 0 到 11 的范围内。????
  • 我添加了一个注释,关于它实际发生的时间。当我们在一个月的最后一天执行时,就会发生这种情况。前几天它给出了正确的日期。有什么想法吗?
  • javascript中没有strptime方法吗?

标签: javascript java strptime graalvm


【解决方案1】:

除了strptime()函数,可以直接这样使用:

const return_date = new Date(source).toISOString()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2012-08-27
    • 2017-03-13
    • 2011-02-21
    • 2018-01-26
    • 2013-05-25
    相关资源
    最近更新 更多