Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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_Datetime - Fatal编程技术网

Java 如何打印没有时区的日期?

Java 如何打印没有时区的日期?,java,datetime,Java,Datetime,我有一个移动应用程序,我在其中捕获一个日期/时间,并将其以毫秒的形式发送到servlet-例如,我在手机中捕捉到凌晨12:55,并将其发送到我的服务器- 因此,我从发送的毫秒数构造日期,并使用SimpleDateFormat打印它,但时间不同,它打印的是上午8:55。 我知道问题是因为我使用了两个不同的时区,我的问题是: 如果不应用任何时区来显示同一时间,如何显示该时间 提前感谢您需要使用日历更改时区,但没有API // Change a date in another timezone pub

我有一个移动应用程序,我在其中捕获一个日期/时间,并将其以毫秒的形式发送到servlet-例如,我在手机中捕捉到凌晨12:55,并将其发送到我的服务器-

因此,我从发送的毫秒数构造日期,并使用SimpleDateFormat打印它,但时间不同,它打印的是上午8:55。 我知道问题是因为我使用了两个不同的时区,我的问题是: 如果不应用任何时区来显示同一时间,如何显示该时间


提前感谢

您需要使用日历更改时区,但没有API

// Change a date in another timezone
public static Date changeTimeZone(Date date, TimeZone zone) {
    Calendar first = Calendar.getInstance(zone);
    first.setTimeInMillis(date.getTime());

    Calendar output = Calendar.getInstance();
    output.set(Calendar.YEAR, first.get(Calendar.YEAR));
    output.set(Calendar.MONTH, first.get(Calendar.MONTH));
    output.set(Calendar.DAY_OF_MONTH, first.get(Calendar.DAY_OF_MONTH));
    output.set(Calendar.HOUR_OF_DAY, first.get(Calendar.HOUR_OF_DAY));
    output.set(Calendar.MINUTE, first.get(Calendar.MINUTE));
    output.set(Calendar.SECOND, first.get(Calendar.SECOND));
    output.set(Calendar.MILLISECOND, first.get(Calendar.MILLISECOND));

    return output.getTime();
}
链接:


我认为这应该行得通。我还没有对它进行广泛的测试。

您需要使用日历来更改时区,但没有用于更改时区的API

// Change a date in another timezone
public static Date changeTimeZone(Date date, TimeZone zone) {
    Calendar first = Calendar.getInstance(zone);
    first.setTimeInMillis(date.getTime());

    Calendar output = Calendar.getInstance();
    output.set(Calendar.YEAR, first.get(Calendar.YEAR));
    output.set(Calendar.MONTH, first.get(Calendar.MONTH));
    output.set(Calendar.DAY_OF_MONTH, first.get(Calendar.DAY_OF_MONTH));
    output.set(Calendar.HOUR_OF_DAY, first.get(Calendar.HOUR_OF_DAY));
    output.set(Calendar.MINUTE, first.get(Calendar.MINUTE));
    output.set(Calendar.SECOND, first.get(Calendar.SECOND));
    output.set(Calendar.MILLISECOND, first.get(Calendar.MILLISECOND));

    return output.getTime();
}
链接:


我认为这应该行得通。我还没有对它进行过广泛的测试。

日历和日期对象以毫秒为单位存储与UTC相关的日期信息

(当前时间与1970年1月1日UTC午夜之间的差值,以毫秒为单位)

这意味着日历/日期对象不会为不同的时区存储不同的值。它们在内部总是使用相同的值。。。格式通常会改变

也许您可以在本地/默认时区中使用SimpleDataFormat:

SimpleDateFormat sdf = new SimpleDateFormat("S")
Date d = sdf.parse(milliseconds);
您还可以尝试更改DateFormat的时区,直到它与您的预期输出相匹配

sdf.setTimeZone(TimeZone.getTimeZone("GMT-8"));
System.out.println(sdf.toString());  

sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
System.out.println(sdf.toString()); 

日历和日期对象以毫秒为单位存储与UTC相关的日期信息

(当前时间与1970年1月1日UTC午夜之间的差值,以毫秒为单位)

这意味着日历/日期对象不会为不同的时区存储不同的值。它们在内部总是使用相同的值。。。格式通常会改变

也许您可以在本地/默认时区中使用SimpleDataFormat:

SimpleDateFormat sdf = new SimpleDateFormat("S")
Date d = sdf.parse(milliseconds);
您还可以尝试更改DateFormat的时区,直到它与您的预期输出相匹配

sdf.setTimeZone(TimeZone.getTimeZone("GMT-8"));
System.out.println(sdf.toString());  

sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
System.out.println(sdf.toString());