在 noda time LocalDate 和 Datetime 之间转换的最佳方法?
Best way to convert between noda time LocalDate and Datetime?
我在项目中同时使用了本机 Datetime 和 Noda Time 库 LocalDate。 LocalDate 主要用于计算,而 Datetime 用于其他地方。
谁能给我一个简单的方法来在本机日期字段和 nodatime 日期字段之间进行转换?
我目前正在使用以下方法将 Datetime 字段转换为 Noda LocalDate。
LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day);
NodaTime API 的开发人员尚未公开从 DateTime
到 LocalDate
的转换。但是,您可以自己创建一个扩展方法并在任何地方使用它作为 shorthand:
public static class MyExtensions
{
public static LocalDate ToLocalDate(this DateTime dateTime)
{
return new LocalDate(dateTime.Year, dateTime.Month, dateTime.Day);
}
}
用法:
LocalDate localDate = startDate.ToLocalDate();
最简单的方法是将 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 和 Noda Time 库 LocalDate。 LocalDate 主要用于计算,而 Datetime 用于其他地方。
谁能给我一个简单的方法来在本机日期字段和 nodatime 日期字段之间进行转换?
我目前正在使用以下方法将 Datetime 字段转换为 Noda LocalDate。
LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day);
NodaTime API 的开发人员尚未公开从 DateTime
到 LocalDate
的转换。但是,您可以自己创建一个扩展方法并在任何地方使用它作为 shorthand:
public static class MyExtensions
{
public static LocalDate ToLocalDate(this DateTime dateTime)
{
return new LocalDate(dateTime.Year, dateTime.Month, dateTime.Day);
}
}
用法:
LocalDate localDate = startDate.ToLocalDate();
最简单的方法是将 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();