有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有不设置时区的机器?

我假设所有系统(Windows、Mac、Linux、Solaris、SunOS、HP-UX、AIX、FreeBSD、NetWare、OS/400等)都有一个时区值。因此,我编写了以下程序来获取系统的本地时区:

import java.text.DateFormat;
public class LocalTimeZone {
    public static void main(String[] args) {
        String local_time_zone;
        DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL);
        local_time_zone=df.getTimeZone().getID();
        System.out.println("local time zone: " + local_time_zone);
    }
}

输出: local time zone: Asia/Calcutta

时区值在我的机器中设置,因此输出显示我的本地时区

有没有一台机器没有设置时区


共 (4) 个答案

  1. # 1 楼答案

    这确实是可能的,而且在嵌入式Linux系统上很常见。例如,当整个操作系统必须从64MB的闪存中运行时,供应商可能会在为设备编译Linux堆栈时选择不包括时区

    即使没有设置,我也会认为Java会返回一个默认值(可能是UTC),因为它在更高的级别上运行

    好吧,Windows上总是会设置时区。(我对WindowsCE不确定)

  2. # 2 楼答案

    从技术上讲,是的。实际上,没有。我认为最重要的问题是你应该支持什么。如果你不需要支持边缘系统,那就不用担心了

  3. # 3 楼答案

    即使假设您可以找到一个没有设置时区的操作系统,您也无法从Java代码中确定这一点

    时区是从存储在格式化程序中的Calendar对象中检索的。如果在对Calendar.getInstance()的调用中没有指定任何内容,则Calendar始终使用TimeZone.getDefault()返回的值与时区相关联

    TimeZone.getDefault()始终返回一个时区值,如果它确实无法确定本地正在使用什么,则使用GMT。从the Javadocs

    • [Uses] GMT as the last resort if the given or detected time zone ID is unknown
  4. # 4 楼答案

    简短回答:可以,但不应该

    就我个人而言,我更喜欢在我的服务器上处理UTC,因为时区和DST的概念会让我在世界各地移动机器时(在我的工作领域,这种情况经常发生)。甚至我也有一套时区:雷克雅未克。这是让机器在没有DST的情况下运行UTC的最简单方法