2016-08-09 2 views
0

Я использую как местное Datetime, так и библиотеку Noda LocalDate в проекте. LocalDate в основном используется для расчета, тогда как Datetime используется в остальных местах.Лучший способ конвертировать между временем нода LocalDate и Datetime?

Может кто-нибудь, пожалуйста, дайте мне простой способ конвертировать между полями данных native и nodatime?

В настоящее время я использую подход ниже, чтобы преобразовать поле Datetime в Noda LocalDate.

LocalDate endDate = new LocalDate(startDate.Year, startDate.Month, startDate.Day); 

ответ

2

Разработчики NodaTime API не разоблачили преобразование из 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(); 
9

Самый простой подход должен был бы преобразовать DateTime в LocalDateTime и принять Date часть :

var date = LocalDateTime.FromDateTime(dateTime).Date; 

Я бы ожидать, что будет более эффективным, чем получение год, месяц и день от DateTime. (Независимо от того или нет, что это значение для вас это совсем другое дело.)

В Нода Time 2.0, есть метод расширения на DateTime так что вы можете использовать:

using static NodaTime.Extensions.DateTimeExtensions; 
... 
var date = dateTime.ToLocalDateTime().Date; 

При обратном направлении, я бы снова перейти через LocalDateTime:

var dateTime = date.AtMidnight().ToDateTimeUnspecified(); 
+1

Как я могу получить компонент Time из 'LocalDateTime' ?. Я создал LocalDateTime как «var dateTime = new LocalDateTime (2017, 8, 01, 22, 30, 00);« Если я последую вашему подходу, я смогу получить дату в одиночку, а не время. – Karthik

+1

@ Karthik: используйте свойство TimeOfDay для получения «LocalTime». –

Смежные вопросы