Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 将日历对象小时设置为0_Java_Calendar_Timestamp - Fatal编程技术网

Java 将日历对象小时设置为0

Java 将日历对象小时设置为0,java,calendar,timestamp,Java,Calendar,Timestamp,这是我的密码 TimeZone timeZone = TimeZone.getTimeZone("UTC"); Calendar calendar = Calendar.getInstance(timeZone); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); calendar.s

这是我的密码

    TimeZone timeZone = TimeZone.getTimeZone("UTC");
    Calendar calendar = Calendar.getInstance(timeZone);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MILLISECOND, 0); 
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    Timestamp start = new Timestamp(calendar.getTime().getTime());
但是时间戳结果是例如=2014-09-30 02:00:00.0我无法将小时数设置为0

任何建议。

我认为客人icza是对的

当然,请尝试以下方法:

Timestamp start = new Timestamp(calendar.getTime().getTime());
System.out.println(start.getTimezoneOffset());

调用
Calendar.getTime()
后,您会得到一个
Date
对象,它是一个时间上的瞬间,没有时区信息

当您要打印或显示此实例时,如果未明确指定,格式化程序将使用默认时区,在您的情况下,该时区不是UTC,但可能是CET

当你把这个瞬间转换成一个
字符串
,你还必须告诉你想要它出现在哪个时区。您还必须在那里指定UTC时区

例如,如果使用,则可以使用其方法


此外,如果结果来自数据库,则必须使用不带时区或UTC时区的
时间戳
SQL类型。

结果
“2014-09-30 02:00:00.0”
是如何构造的?很可能是由使用不同时区(非UTC)的格式化程序设置的。将一天中的小时设置为22,将月中的天设置为月中的天-1我建议您使用joda时间库处理此类问题:通过这种方式,您可以通过调用DateTime yourDateTime=DateTime.now()轻松创建所需的实例。withSecondOfMinute(0)。withMinuteOfHour(0)。在一天之内(0);要检索所需的日历对象,可以在joda time Calendar中选中此方法:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

System.out.println(sdf.format(start));