Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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.util.date仅获取y-m-d的毫秒数_Java_Mysql_Date - Fatal编程技术网

java.util.date仅获取y-m-d的毫秒数

java.util.date仅获取y-m-d的毫秒数,java,mysql,date,Java,Mysql,Date,情况:有一个对象AuditLog,其中包含变量java.util.Date。此对象保存在mySQL数据库中 @Entity public class AuditLog implements Persistable<Long> { ... @Temporal(TemporalType.DATE) private Date date; ... } 因此,您可以看到日期实际上是正确的,但只有y-m-d 然后我尝试了这个(下面)来检查毫秒是否被改变 Asse

情况:有一个对象AuditLog,其中包含变量java.util.Date。此对象保存在mySQL数据库中

@Entity
public class AuditLog implements Persistable<Long> {
    ...
    @Temporal(TemporalType.DATE)
    private Date date;
    ...
}
因此,您可以看到日期实际上是正确的,但只有y-m-d 然后我尝试了这个(下面)来检查毫秒是否被改变

Assert.assertEquals(date.getTime(), log.getDate().getTime());

Output:
expected:<1495634973799> but was:<1495576800000>
Assert.assertEquals(date.getTime(),log.getDate().getTime());
输出:
预期:但是:
现在我认为最好的方法是只获取的毫秒数

问题:这可以相对简单地实现吗?我应该这样做吗?我认为日期会因为某种数据库操作而改变,所以调整测试是可以的,对吗

Calendar cal = GregorianCalendar.getInstance();
cal.set(Calendar.YEAR, 2017);
cal.set(Calendar.MONTH, 5 - 1);
cal.set(Calendar.DAY_OF_MONTH, 24);
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date d = cal.getTime();
System.out.println(d.getTime());
这段代码创建了一个新的java.util.Date,只设置了年、月和日。本例的结果是
1495576800000
,这正是您想要的

较短的方法是:

Date d = new Date(0l);
d.setYear(117);
d.setMonth(4);
d.setDate(24);
d.setHours(0);
这段代码创建了一个新的java.util.Date,只设置了年、月和日。本例的结果是
1495576800000
,这正是您想要的

较短的方法是:

Date d = new Date(0l);
d.setYear(117);
d.setMonth(4);
d.setDate(24);
d.setHours(0);

您应设置两个日期的格式:

Date date = new Date();
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
dt.format(date);

然后相互比较。

您应该设置两个日期的格式:

Date date = new Date();
SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd");
dt.format(date);

然后相互比较。

有两种方法:

  • 使用本地日期:您可以将util
    date
    转换为
    LocalDate
    并对这两个对象执行
    assertEquals
    <代码>本地日期没有时间,例如:

    日期输入=新日期();
    LocalDate日期=input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    系统输出打印项次(日期)

  • 使用Apache commons'DateUtils:您可以使用
    truncate
    方法将非日期字段设置为零,例如:

    日期输入=新日期();
    Date truncated=DateUtils.truncate(输入,Calendar.Date);
    System.out.println(截断)

    Apache commons库的maven依赖项


  • 有两种方法可以做到这一点:

    • 使用本地日期:您可以将util
      date
      转换为
      LocalDate
      并对这两个对象执行
      assertEquals
      <代码>本地日期
      没有时间,例如:

      日期输入=新日期();
      LocalDate日期=input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
      系统输出打印项次(日期)

    • 使用Apache commons'DateUtils:您可以使用
      truncate
      方法将非日期字段设置为零,例如:

      日期输入=新日期();
      Date truncated=DateUtils.truncate(输入,Calendar.Date);
      System.out.println(截断)

      Apache commons库的maven依赖项

    您可以使用以下代码获得“仅限日、月、年”:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class Answer {
        public static void main(String args[]) throws ParseException {
            // parse the date and time
            String input = "Wed May 24 15:54:40 CEST 2017";
            SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
            Date date = parser.parse(input);
    
            // parse just the date
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            formatter.setTimeZone(TimeZone.getTimeZone("CEST"));
    
            String formattedDate = formatter.format(date);
    
            Date parsedDate = formatter.parse(formattedDate);
    
            System.out.println(parsedDate);
    
            // use https://currentmillis.com/ to check the milliseconds figures
            System.out.println("Wed May 24 15:54:40 CEST 2017 in milliseconds \t" + date.getTime());
    
            System.out.println("Wed May 24 00:00:00 CEST 2017 in milliseconds \t" + parsedDate.getTime());
         }
     }
    
    第二个SimpleDataFormat(“yyyy-MM-dd”)在年-月-日解析

    使用Date.getTime());获取毫秒数

    输出为:

    Wed May 24 15:54:40 CEST 2017 in milliseconds   1495634080000
    Wed May 24 00:00:00 CEST 2017 in milliseconds   1495584000000
    
    149558400000=2017年5月24日星期三00:00:00(使用)

    您可以使用以下代码获得“仅限日期、月份、年份”:

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.TimeZone;
    
    public class Answer {
        public static void main(String args[]) throws ParseException {
            // parse the date and time
            String input = "Wed May 24 15:54:40 CEST 2017";
            SimpleDateFormat parser = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
            Date date = parser.parse(input);
    
            // parse just the date
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
            formatter.setTimeZone(TimeZone.getTimeZone("CEST"));
    
            String formattedDate = formatter.format(date);
    
            Date parsedDate = formatter.parse(formattedDate);
    
            System.out.println(parsedDate);
    
            // use https://currentmillis.com/ to check the milliseconds figures
            System.out.println("Wed May 24 15:54:40 CEST 2017 in milliseconds \t" + date.getTime());
    
            System.out.println("Wed May 24 00:00:00 CEST 2017 in milliseconds \t" + parsedDate.getTime());
         }
     }
    
    第二种简单格式(“yyyy-MM-dd”);在年-月-日解析

    使用Date.getTime());以获取毫秒数

    输出为:

    Wed May 24 15:54:40 CEST 2017 in milliseconds   1495634080000
    Wed May 24 00:00:00 CEST 2017 in milliseconds   1495584000000
    


    149558400000=2017年5月24日星期三00:00:00(使用)

    好的,我知道了。谢谢好的,我明白了。谢谢这是行不通的。但是
    dt.format(date)
    返回一个字符串,该字符串等于
    log.getDate().toString
    。这是一种难看的解决方法,尽管您需要以相同的方式从
    log.getDate()
    格式化日期(
    toString()
    不起作用)。有那么难看吗?使用
    LocalDate
    更好,我知道…:-)这不起作用。但是
    dt.format(date)
    返回一个字符串,该字符串等于
    log.getDate().toString
    。这是一种难看的解决方法,尽管您需要以相同的方式从
    log.getDate()
    格式化日期(
    toString()
    不起作用)。有那么难看吗?使用
    LocalDate
    更好,我知道…:-)这将是一个非常好的解决方案,但是
    assertEquals
    失败,因为类型不同
    java.time.LocalDate,但是was:java.sql.Date
    。在调用
    assertEquals
    之前,您需要将这两个日期转换为
    LocalDate
    。这将是一个非常好的解决方案,但是
    assertEquals
    失败,因为类型不同
    java.time.LocalDate但是was:java.sql.Date
    。在调用
    assertEquals
    之前,需要将这两个日期都转换为
    LocalDate
    。请注意,获取
    Date
    对象的y-m-d取决于时区。你首先需要决定你想在哪个时区进行此操作。一旦你确定了一个时区,这将更加容易和自然。考虑升级。哪种类型<代码>日志.GETDATE()>返回> Log.GETDATE返回java. UTILDATE DATEWORD,获得<代码>日期>代码>对象的Y-MD是时区相关的。你首先需要决定你想在哪个时区进行此操作。一旦你确定了一个时区,这将更加容易和自然。考虑升级。哪种类型<代码>日志?GETDATE()<返回> Log.GETDATE返回java. UTILL日期日期