当前位置: 首页 > 面试题库 >

将时间设置为00:00:00

佘俊茂
2023-03-14
问题内容

我在用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


 类似资料:
  • 问题内容: 我需要在数据库上更改一些值。 我忘记为表格设置可空值,并且默认情况下将其设置为0000-00-00 00:00:00。 现在,我需要将该值转换为。 字段类型为“日期时间”。 我该怎么做? 我尝试使用典型的方法,但是它不起作用。 问题答案: 您首先需要将该列设置为可空: 然后更新值:

  • 问题内容: 如何将字段的默认值设置为“ 0000-00-00 00:00:00”?如果我们不能使用“ 0000-00-00 00:00:00”作为默认值?什么是 基本 有效tiemdate? 例如,这是用于创建我的商品表的SQL, 运行此查询时出现此错误, 问题答案: 错误原因:SQL模式 您可以设置的默认值,或场特殊的“零”作为虚拟日期“0000-00-00”值,如果SQL模式允许它。对于低于5

  • 问题内容: 我有一个字符串‘2009-06-24 09:52:43.000’,我需要将其插入到表的DateTime列中。 但我不在乎时间,只想将其插入为2009-06-24 00:00:00.000 如何在T-SQL中做到这一点? 问题答案: 对于SQL Server 2005及以下版本: 对于SQL Server 2008及更高版本:

  • 本文向大家介绍MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决,包括了MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决的使用技巧和注意事项,需要的朋友参考一下 刚开始学习数据库操作,今天存数据时发现,保存的时候报错(Error 1292: Incorrect datetime value: '0000-00-00' f

  • 问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将大胆猜测您正在使用MySQL :-)它使用“零日期”作为特殊占位符 -不幸的是,JDBC默认情况下无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为MySQL连接的

  • 问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将做出一个疯狂的猜测,即您正在使用MySQL :-)它使用“零日期”作为特殊的占位符 -不幸的是,默认情况下JDBC无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为