2016-11-21 4 views
1

Я пытаюсь преобразовать следующий код, который находится в C# в java. И я сталкиваюсь с трудностями в его преобразовании. Пожалуйста, любой может предложить мне простой способ сделать это на Java.C# Timespan эквивалент в java?

DateTime StartDate = new DateTime(PWUpdatedOn.Year, 01, 01); 
TimeSpan ts = new TimeSpan(PWUpdatedOn.Ticks - StartDate.Ticks); 
//Response.Write(ts.Days+1); 
days = ts.Days + 1; 
lngN = 0; 

PWUpdatedOn.Year = 2016 // current year 
+1

Зависит от того, какую версию Java вы ищете, чтобы заставить ее работать. В Java 8 есть классы 'java.time. *', Которые могут сделать это для вас, но перед этим вам придется либо использовать библиотеку JodaTime, либо самостоятельно использовать математику, используя примитивные значения. – coladict

+1

Проверьте это https://docs.oracle.com/javase/tutorial/datetime/iso/period.html для java 8 –

ответ

2

Как Jigar Joshi ответил в другой Question.

Interval из JodaTime будет делать ..

интервал времени представляет собой период времени между двумя моментами. Интервалы> включают начало и исключение. Конечный момент всегда больше или равен начальному моменту. Интервалы имеют фиксированную миллисекунду. В этом разница между начальным и конечным моментами. Продолжительность отображается отдельно ReadableDuration. В результате интервалы не сопоставимы. Чтобы сравнить длину двух интервалов, вы должны сравнить их длительность.

Интервал также может быть преобразован в ReadablePeriod. Это представляет собой разницу между начальным и конечным точками с точки зрения таких полей, как годы и дни.

Интервал является потокобезопасным и неизменным.

1

Я не уверен, что Клещи в C#. Но это было бы примерно так:

LocalDateTime startDate = LocalDateTime.of(PWUpdatedOn.getYear(), 1, 1); 
    Period ts = Period.between(PWUpdatedOn, startDate.toLocalDate()); 
    days = ts.getDays() + 1; 

Обратите внимание, что для параметра Period.between() требуются два экземпляра LocalDate. Если PWUpdateOn является экземпляром LocalDateTime, его необходимо преобразовать с помощью метода toLocalDate().

Некоторые потенциально важные замечания: для zoned datetimes используйте ZonedDateTime, а не LocalDateTimel; все объекты времени и периода неизменны в Java.