在Java中将军用时间转换为标准时间和通用时间?
我现在得到了正确的军事时间。我希望程序显示的是4:20:01,而不是标准时间的16:20:01。我尝试过使用if语句,但没有成功 我对世界时间感到困惑。世界时间会和军事时间一样吗?还是另一回事?如果是这样,我怎样才能让程序显示世界时 这是我的当前代码:在Java中将军用时间转换为标准时间和通用时间?,java,time,Java,Time,我现在得到了正确的军事时间。我希望程序显示的是4:20:01,而不是标准时间的16:20:01。我尝试过使用if语句,但没有成功 我对世界时间感到困惑。世界时间会和军事时间一样吗?还是另一回事?如果是这样,我怎样才能让程序显示世界时 这是我的当前代码: package readtime; import java.time.LocalDateTime; public class Time { // field data int hour; int minute;
package readtime;
import java.time.LocalDateTime;
public class Time
{
// field data
int hour;
int minute;
int second;
public Time ()
{
hour = 0;
minute = 0;
second = 0;
}
public void getMilitaryTime()
{
LocalDateTime now = LocalDateTime.now();
hour = now.getHour();
minute = now.getMinute();
second = now.getSecond();
//System.out.print(hour + ":" + minute + ":" + second);
}
public void getStandardTime()
{
}
public void getUniversalTime()
{
}
@Override
public String toString()
{
return ("Time: " + hour + ":" + minute + ":" + second);
}
}
世界时(世界时坐标也称为UTC)和军用时间是正交概念。或者独立,如果你喜欢的话
据我所知,这只意味着使用24小时的时钟,这是世界上大部分地区正在做的事情。这就是您已经拥有的:16:20:01(不过,我认为您的程序不会打印带有前导零的01)。目前,它可能表示本地时区的16:20:01或UTC的16:20:01(或其他时区的16:20:01)。我有时看到用四位数字写的军事时间,没有冒号:1620
,甚至听到它的发音是“一千六百二十”
如果您打算用本地或通用以及12小时或24小时的时钟时间填充字段小时
、分钟
和秒
,我不建议这样做。通常认为,将数据(此处为时间)和向用户显示的数据(此处为类似4:20:01的字符串)作为程序中的独立内容保存是一个好主意。因此,我的建议是,你总是以一种方式存储时间,然后根据当前的需要对其进行不同的格式设置。很抱歉,这可能会使您的时间
课程多余
要以所需格式显示时间,最简单的方法是使用DateTimeFormatter
。要将当前时间打印为类似4:20:01
:
System.out.println(LocalTime.now(ZoneId.systemDefault())
.format(DateTimeFormatter.ofPattern("h:mm:ss")));
ZoneId.systemDefault()
在技术上是不需要的,但它明确表示您正在JVM的默认时区中打印时间,因此我更喜欢将它打印在JVM的默认时区中
要以相同的方式打印世界时,只需使用ZoneOffset.UTC
而不是ZoneId.systemDefault()
要打印军事时间,只需在格式模式字符串中使用大写字母
H
而不是小写的H
,例如“H:mm:ss”
表示16:20:01
或“HHmm”
表示1620
。大写字母H
表示从0到23的小时,而H
表示从1到12的上午或下午的小时。您可以在中找到格式模式字符串中可能使用的所有字母。“世界时间”基本上是指伦敦的时间(或者如果不遵守夏季时间,伦敦的时间)。它与显示时间的格式无关。除了读取日期格式外,您还应该读取时区。通用或更准确地说,世界协调时间(UTC)是标准时间。每个时区都有所谓的“本地”时间。你所说的“军事”时间并不是军方的专属时间,而是代表当地时间的标准时间。所以你们的“军事”时间实际上是大多数地方的“标准当地时间”。时区所指的“标准”时间与12小时或24小时表示无关,而是与UTC相抵消,UTC在许多地方随时间而变化。格林威治标准时间(GMT)与UTC大致相同。以24小时格式表示UTC/GMT标准时间是标准时间。这些都很有帮助,也很有意义。我现在拿到了。不,马文,请不要看那里。当您可以甚至确实使用java.time.LocalDateTime
时,您可以也应该避免使用DateFormat
及其过时的老朋友。对于格式化,您需要一个。