首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鲁迅endOf月解决错误日期

鲁迅endOf月解决错误日期
EN

Stack Overflow用户
提问于 2022-07-31 21:44:49
回答 2查看 894关注 0票数 0

我正在使用卢克松进行日期计算,并试图得到一个月的月底在德国时区。我尝试了以下代码,但它给了我'2022-08-30T23:59:59.999+02:00‘。但八月份有31天

代码语言:javascript
复制
DateTime.fromISO('2022-07-31T10:00:00')
            .setZone("Europe/Berlin")
            .plus({month: 1})
            .endOf('month')
            .toString() // '2022-08-30T23:59:59.999+02:00'

(https://codesandbox.io/s/luxon-playground-forked-srh81m)

我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-01 07:21:51

我认为这个问题显示在链接CodeSandbox是由于旧版本的鲁迅使用(1.2.0)。

您将使用版本>= 1.21.2获得预期的结果,请参阅变化量g

1.21.2 (2019-11-18)

  • 修正铬金丝雀抛出时区计算的错误

工作实例:

代码语言:javascript
复制
const DateTime = luxon.DateTime;
console.log(
DateTime.fromISO('2022-07-31T10:00:00')
            .setZone("Europe/Berlin")
            .plus({month: 1})
            .endOf('month')
            .toString() 
);
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/luxon@1.21.2/build/global/luxon.min.js"></script>

票数 2
EN

Stack Overflow用户

发布于 2022-08-01 02:23:13

在回答你的问题之前,快速观察一下: 您共享的CodeSandbox链接中的代码似乎与你的问题中的细节无关,下面我将回答您问题的细节(而不是外部链接中的内容):

让我们看看方法链中每个函数返回的内容:

请记住,所有的鲁迅对象都是不可变的。。所有这些都不会发生任何变化:它们都返回新的DateTime实例。

fromISO方法接受一个options对象作为第二个参数,该对象具有一个可选的zone属性,默认情况下该属性设置为"local"。如果您在从ISO字符串创建DateTime时没有提供此选项(与示例中的示例一样,该字符串不包括时区信息),则初始DateTime实例将配置为代码的JS运行时环境的时区(通常由主机操作系统设置),字符串中的日期和时间信息将被解释为就在该时区。

因此,如果您提供一个没有区域信息的ISO字符串(但您希望使用特定的区域),则应该在实例化时提供该选项,如下所示:

代码语言:javascript
复制
const dateStr = '2022-07-31T10:00:00';
const zone = 'Europe/Berlin';

const dt = DateTime.fromISO(dateStr, {zone});

以这种方式设置区域将在调试字符串中产生预期的转换结果:

代码语言:javascript
复制
<script type="module">

import {DateTime} from 'https://unpkg.com/luxon@3.0.1/build/es6/luxon.js';

const dateStr = '2022-07-31T10:00:00';
const zone = 'Europe/Berlin';

const resultStr = DateTime.fromISO(dateStr, {zone})
  .plus({month: 1})
  .endOf('month')
  .toString();

console.log({resultStr}); // { resultStr: "2022-08-31T23:59:59.999+02:00" }

</script>

最后--虽然与您的问题- since没有直接关系,但您似乎是在与鲁迅转换日期,请记住,它有两个转换精度模式:“随意”和“长期”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73187118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档