2016-06-02 3 views
0

Я переношу некоторый код с Java на .NET и ища эквивалент ноды времени метода joda-time объекта LocalTime getMillisOfDay().Эквивалент joda LocalTime getMillisOfDay() в ноде

Есть ли эквивалентный код, или я должен сам его кодировать?

+0

Не знакомы с нода-временем, миллис.Од. Сколько миллисекунд с полуночи данного DateTime? –

+0

Да, именно это. – Jon

+0

... Почему вы используете 'LocalTime'? Потребность в этом типе обычно довольно редко, по сравнению с абсолютными марками ('Instant' или' DateTime'). Тем более, что полночь не существует во время некоторых переключателей DST. –

ответ

3

В Ноде время 1.x, используйте LocalTime.TickOfDay свойство, а затем просто разделить его на NodaConstants.TicksPerMillisecond получить миллисекунды:

LocalTime localTime = ...; 
long millis = localTime.TickOfDay/NodaConstants.TicksPerMillisecond; 
+0

Спасибо - отлично работает, хотя для исходного вопроса я думаю, что это TicksPerMillisecond. – Jon

+0

@Jon: да - неправильно, исправится. –

0

Ближайший вы можете добраться до количество миллисекунд, прошедших с полуночи с вне коробки функциональности .Net:

dateTime.TimeOfDay.TotalMilliseconds 

например

double millisOfDay = DateTime.Now.TimeOfDay.TotalMilliseconds; 

TimeOfDay возвращает TimeSpan с полуночи (время суток) и TotalMilliseconds доходностей (имя, возможно, раздали) общее количество миллисекунд этого TimeSpan.

Это, кстати, double, так что вы также получите доли миллисекунд. Если вам это нужно много, метод расширения может быть полезным:

public static class DateTimeExtension 
{ 
    // should of course be in pascal case ;) 
    public static int getMillisOfDay(this DateTime dateTime) 
    { 
     return (int) dateTime.TimeOfDay.TotalMilliseconds; 
    } 
} 

int millisOfDay = DateTime.Now.getMillisOfDay(); 
+0

Обратите внимание, что это работает только в том случае, если вы используете UTC или _ignoring time zone_ (либо с 'DateTimeKind.Unspecified', либо просто рассматриваете его как« local »и притворяетесь, что часовой пояс не существует), поскольку в противном случае это будет (возможно) возвращают неправильное значение два раза в год: 'DateTime', вопреки ожиданиям, является DST/часовым поясом невежественным для всех методов и результатов (кроме' ToUniveralTime() '/' ToLocalTime() '.' TimeSpan' будет быть в часе коротких/длинных в дни DST (при условии, что вы находитесь в часовом разном зоне DST, а не что-то еще). –

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

  • Нет связанных вопросов^_^