我的分钟变量提前 900 分钟显示



我的最终结果是这样的:7月3点过后918分钟 9、2017,第一纪元。

918分钟很奇怪,我不愿意做那么多数学来弄清楚现在是什么时间。这是我下面的代码。

package learn;
import java.time.*;
import java.time.temporal.*;
class time {
public static void main (String[] args) {
LocalDateTime now = LocalDateTime.now();
int minute = now.get(ChronoField.MINUTE_OF_DAY);
int hour = now.get(ChronoField.HOUR_OF_DAY);
int day = now.get(ChronoField.DAY_OF_MONTH);
int month = now.get(ChronoField.MONTH_OF_YEAR);
int year = now.get(ChronoField.YEAR_OF_ERA);
int era = now.get(ChronoField.ERA);
if (hour < 12) {        
System.out.println("Good morning you sack o' shit."); 
}
else if (hour < 17) {
System.out.println("Get a job hobo. ");
}
else {        
System.out.println("Night night, jobless");
}
System.out.print("It's: ");
if (minute != 0) {
System.out.print("" + minute + " ");
System.out.print( (minute != 1) ? "minutes" : "minute");
System.out.print(" past");
}
System.out.print(" ");
System.out.print( (hour > 12) ? (hour - 12) : hour);
System.out.print(" o'clock on ");
switch (month) {        
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December"); break;
}
System.out.println(" " + day + ", " + year + ", " + era + "st Era.");
}
}

您正在使用ChronoField.MINUTE_OF_DAY,这不是您想要的(下午 3:18 相当于一天中的 918o分钟,因为它已经从一天开始(午夜(到下午 3:18 已经过去了 918 分钟(。

您想要的字段是ChronoField.MINUTE_OF_HOUR,尽管LocalDateTime已经有获取所需字段的方法:

int minute = now.getMinute();
int hour = now.getHour();
int day = now.getDayOfMonth();
int month = now.getMonthValue();
int year = now.getYear();
int era = now.toLocalDate().getEra().getValue();

要获取英文月份名称,还有一个内置方法:

import java.util.Locale;
import java.time.format.TextStyle;
String monthName = now.getMonth().getDisplayName(TextStyle.FULL, Locale.ENGLISH);

从 JavadocChronoField中,以下是您似乎需要的字段列表:

MINUTE_OF_HOUR小时中的分钟。

HOUR_OF_DAY一天中的小时。

DAY_OF_MONTH月中的某天。

MONTH_OF_YEAR一年中的月份,例如 3 月。

YEAR外推年,例如 2012 年。

最新更新