我在项目中同时使用本地日期和Noda Time库的LocalDate。LocalDate主要用于计算,而Datetime则用于其他地方。
请问有没有简单的方法来在本地日期和nodatime日期字段之间进行转换?
目前我正在使用以下方法将Datetime字段转换为Noda LocalDate。
LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day);
我在项目中同时使用本地日期和Noda Time库的LocalDate。LocalDate主要用于计算,而Datetime则用于其他地方。
请问有没有简单的方法来在本地日期和nodatime日期字段之间进行转换?
目前我正在使用以下方法将Datetime字段转换为Noda LocalDate。
LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day);
最简单的方法是将DateTime
转换为LocalDateTime
,然后取Date
部分:
var date = LocalDateTime.FromDateTime(dateTime).Date;
我希望这样做比从DateTime
获取年份、月份和日期更有效率。(无论对你是否重要是另外一回事。)
在Noda Time 2.0中,有一个扩展方法可以用于DateTime
:
using static NodaTime.Extensions.DateTimeExtensions;
...
var date = dateTime.ToLocalDateTime().Date;
对于相反的方向,我会再次通过LocalDateTime
进行:
var dateTime = date.AtMidnight().ToDateTimeUnspecified();
DateTime
到LocalDate
的转换方法。但是,您可以自己创建扩展方法,并将其用作简写在任何地方使用:public static class MyExtensions
{
public static LocalDate ToLocalDate(this DateTime dateTime)
{
return new LocalDate(dateTime.Year, dateTime.Month, dateTime.Day);
}
}
使用方法:
LocalDate localDate = startDate.ToLocalDate();
LocalDateTime
中获取时间组件?我已经创建了一个LocalDateTime
,如var dateTime = new LocalDateTime(2017, 8, 01, 22, 30, 00);
。如果我按照你的方法去做,我只能得到日期而无法得到时间。 - KarthikTimeOfDay
属性来获取LocalTime
。 - Jon Skeet