2016-02-26 3 views
0

Я пытаюсь изменить скрипт php на java, но я застрял в этих двух строках кода. Кто-нибудь знает, что такое эквивалентный код?От php до Java - mktime и date

$Menarche = mktime(2, 0, 0, $Month, $Dday, $Year); 
$DueDate = $Menarche + 86400*(280 + ($MCL - 28)); 
+0

У вас есть попробовал что-нибудь еще – bmarkham

+0

Использование java.util.Calendar –

+0

Почему бы не начать с [учебника] (http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html). ['LocalDateTime.of'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#of-int-int-int-int-int-int-) для первая строка и ['LocalDateTime.plus'] (https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#plus-long-java.time.temporal.TemporalUnit-) для второй части - не нужно умножать до нескольких дней до нескольких секунд, просто используйте правильный блок для начала. Просто используйте ['Duration'] (https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html). –

ответ

0

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

final int month = 11; 
final int day = 5; 
final int year = 1605; 

final LocalDateTime localDateTime = LocalDateTime.of(year, month, day, 2, 0, 0); 

Теперь, чтобы напечатать его, мы можем использовать DateTimeFormatter:

final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; 
System.out.printf("A date to remember: %s%n", localDateTime.format(formatter)); 

Выход:

Свидание помнить: 1605-11-05T02: 00: 00

Чтобы сделать арифметику с помощью LocalDateTime, мы можем просто использовать из множества plusXXX методами, например с использованием месяцев:

final LocalDateTime dueDate = localDateTime.plusMonths(9); 
System.out.printf("Nine months later: %s%n", dueDate.format(formatter)); 

Выход:

Свидание помнить: 1606-08-05T02: 00: 00

Или, если у нас есть точный продолжительность - мы не можем использовать месяцы, потому что они «оценены» - вы можете создать Duration:

final Duration gestation = Duration.ofDays(280); 
final LocalDateTime dueDate = localDateTime.plus(gestation); 
+0

Большое спасибо! Это так полезно! – Vivian

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