Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将军用时间转换为标准时间和通用时间?_Java_Time - Fatal编程技术网

在Java中将军用时间转换为标准时间和通用时间?

在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;

我现在得到了正确的军事时间。我希望程序显示的是4:20:01,而不是标准时间的16:20:01。我尝试过使用if语句,但没有成功

我对世界时间感到困惑。世界时间会和军事时间一样吗?还是另一回事?如果是这样,我怎样才能让程序显示世界时

这是我的当前代码:

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
及其过时的老朋友。对于格式化,您需要一个。