在noda time LocalDate和Datetime之间进行转换的最佳方式?

The*_*ani 1 c# datetime type-conversion nodatime

我在项目中使用本机Datetime和Noda Time库LocalDate.LocalDate主要用于计算,而Datetime用于其他地方.

有人可以给我一个简单的方法来转换本地和nodatime日期字段?

我目前正在使用以下方法将Datetime字段转换为Noda LocalDate.

LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 18

最简单的方法是将DateTimea 转换为a LocalDateTime并取得Date部分:

var date = LocalDateTime.FromDateTime(dateTime).Date;
Run Code Online (Sandbox Code Playgroud)

我希望这比获得年,月,日更有效DateTime.(这对你来说意义重大是另一回事.)

在Noda Time 2.0中,有一个扩展方法,DateTime所以你可以使用:

using static NodaTime.Extensions.DateTimeExtensions;
...
var date = dateTime.ToLocalDateTime().Date;
Run Code Online (Sandbox Code Playgroud)

对于相反的方向,我再次通过LocalDateTime:

var dateTime = date.AtMidnight().ToDateTimeUnspecified();
Run Code Online (Sandbox Code Playgroud)

  • @Karthik:使用“ TimeOfDay”属性获取“ LocalTime”。 (2认同)

Zei*_*kki 6

NodaTime API的开发者还没有露出从转换DateTimeLocalDate.但是,您可以自己创建一个扩展方法,并在任何地方使用它作为简写:

public static class MyExtensions
{
    public static LocalDate ToLocalDate(this DateTime dateTime)
    {
        return new LocalDate(dateTime.Year, dateTime.Month, dateTime.Day);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

LocalDate localDate = startDate.ToLocalDate();
Run Code Online (Sandbox Code Playgroud)