gpt4 book ai didi

c# - Nodatime 计算 X 天内的年/月/日

转载 作者:行者123 更新时间:2023-11-30 13:57:06 24 4
gpt4 key购买 nike

假设我有678天,如何计算从那一刻算起有多少年、月、日?

Duration duration = Duration.FromStandardDays(678);
Instant now = SystemClock.Instance.Now;
Instant future = now + duration;

// I have to convert NodaTime.Instant to NodaTime.LocalDate but don't know how

Period period = Period.Between(now, future);
Console.WriteLine("{0} years, {1} months, {2} days", period.Years, period.Months, period.Days);

最佳答案

你确实可以用 Noda Time 做到这一点。

首先,您需要一个起点。这使用本地时区的当前日期。您可能希望使用不同的日期或不同的时区,具体取决于您的情况。

Instant now = SystemClock.Instance.Now;
DateTimeZone timeZone = DateTimeZoneProviders.Bcl.GetSystemDefault();
LocalDate today = now.InZone(timeZone).Date;

然后加上天数:

int days = 678;
LocalDate future = today.PlusDays(days);

然后您可以获得具有所需单位的句点:

Period period = Period.Between(today, future, PeriodUnits.YearMonthDay);
Console.WriteLine("{0} years, {1} months, {2} days",
period.Years, period.Months, period.Days);

重要的是要认识到结果代表“从现在开始的时间”。或者,如果您替换为不同的起点,则为“(起点) 的时间”。在任何情况下,您都不应认为结果是 X days = Y years + M months + D days。这是荒谬的,因为一年中的天数和一个月中的天数取决于您所谈论的年和月。

关于c# - Nodatime 计算 X 天内的年/月/日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com