将时间设置为00:00:00

我在用Java重置小时数时遇到问题。对于给定的日期,我要将小时设置为00:00:00。

这是我的代码:

/**

* Resets milliseconds, seconds, minutes and hours from the provided date

*

* @param date

* @return

*/

public static Date trim(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

calendar.set(Calendar.MILLISECOND, 0);

calendar.set(Calendar.SECOND, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.HOUR, 0);

return calendar.getTime();

}

问题是,有时时间是12:00:00,有时是时间00:00:00,当我查询数据库中保存的实体以及查询07.02.2013

00:00:00的实际实体时间(存储的实际时间)12:00:00失败时。

我知道12:00:00 == 00:00:00

我正在使用AppEngine。这是Appengine错误,问题还是其他问题?还是取决于其他因素?

回答:

使用另一个常数代替Calendar.HOUR,使用Calendar.HOUR_OF_DAY

calendar.set(Calendar.HOUR_OF_DAY, 0);

Calendar.HOUR使用0-11(与AM / PM配合使用),并Calendar.HOUR_OF_DAY使用0-23。

引用Javadocs:

公共静态最终int HOUR

获取和设置的字段号,指示上午或下午的时间。HOUR用于12小时制(0-11)。中午和午夜用0而不是12表示。例如,在10:04:15.250

PM,小时是10。

公共静态最终int HOUR_OF_DAY

get和set的字段号指示一天中的小时。HOUR_OF_DAY用于24小时制。例如,在10:04:15.250 PM,HOUR_OF_DAY是22。

测试(“现在”目前是2013年7月23日太平洋夏令时间的14:55):

public class Main

{

static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public static void main(String[] args)

{

Calendar now = Calendar.getInstance();

now.set(Calendar.HOUR, 0);

now.set(Calendar.MINUTE, 0);

now.set(Calendar.SECOND, 0);

System.out.println(sdf.format(now.getTime()));

now.set(Calendar.HOUR_OF_DAY, 0);

System.out.println(sdf.format(now.getTime()));

}

}

输出:

$ javac Main.java

$ java Main

2013-07-23 12:00:00

2013-07-23 00:00:00

以上是 将时间设置为00:00:00 的全部内容, 来源链接: utcz.com/qa/420915.html

回到顶部