废弃的方法(@Deprecated)

如果不想要java.util.Date中的时分秒数据,希望将它清零,只保留年月日,最简单的办法是
调用setHours,setMinutes,setSeconds方法清零。

Date now = new Date();
now.setHours(0);
now.setMinutes(0);
now.setSeconds(0);
// 输出Date的日期和时间部分 yyyy-MM-dd HH:MM:SS
System.out.printf("%1$tF %1$tT\n",now);

不过这些方法已经被弃用了,但对绝大部分系统,都没问题。
如果讲究点儿,还是遵循建议不用为好。

java.util.Calendar

既然不建议用Date中的setHours,setMinutes,setSeconds方法对时分秒清零,java的代码中也提示了,可以改用Calendar.set(int field, int value)方法来对指定的域清零

Date now = new Date();
Calendar cal1 = Calendar.getInstance();
cal1.setTime(now);
// 将时分秒,毫秒域清零
cal1.set(Calendar.HOUR_OF_DAY, 0);
cal1.set(Calendar.MINUTE, 0);
cal1.set(Calendar.SECOND, 0);
cal1.set(Calendar.MILLISECOND, 0);
System.out.printf("%1$tF %1$tT\n", cal1.getTime());// cal1.getTime()返回的Date已经是更新后的对象

java.time.LocalDate

上面的办法略显复杂啊,有没有理想简洁的途径让我少写点代码呢?
java8提供了一个新的类LocalDate,是一个不包含时区,ISO-8601 格式的日期类(比如 “2016-12-28”),LocalDate对象是个只读取的(immutable class),java.util.Date可以转换为LocalDate。
java.sql.Date是java.util.Date的子类,是为了配合SQL DATE而设置的数据类型。java.sql.Date只包含年月日信息,时分秒毫秒都会清零。格式类似:YYYY-MM-DD。
在java8中LocalDate可以转换成java.sql.Date
这两者一结合,也就可以将Date转换为时分秒清零0的对象,而且代码更简洁,一行就能搞定。

Date now = new Date();
// java.util.Date -> java.time.LocalDate
LocalDate localDate=now.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
// java.time.LocalDate -> java.sql.Date
Date newDate=java.sql.Date.valueOf(localDate);
System.out.printf("%1$tF %1$tT\n", newDate);

参考资料:
《Java 8 – Convert Date to LocalDate and LocalDateTime》

废弃的方法(@Deprecated)如果不想要java.util.Date中的时分秒数据,希望将它清零,只保留年月日,最简单的办法是 调用setHours,setMinutes,setSeconds方法清零。Date now = new Date();now.setHours(0);now.setMinutes(0);now.setSeconds(0);// 输出Date的日期和时间部分
Java java . util . Date 类是 Java 初的时间类之一。该类的大部分方法已不推荐使用,取而代之的是 java . util . Calendar 类。不过你仍然可以使用 java . util . Date 类去表示某个时间。下面是一个如何实例化 java . util . Date 的例子: java . util . Date date = new java . util . Date (); Date 实例包含了当前时间作为它的日期和时间。   你可以通过getTime()方法访问 java . util . Date 实例的日期和时间,比如像这样: java . util . Date date = new java . util .D
Java 导出操作, Date 类型数据导出到excel中只 保留 年月日 * 一、存在Student表格,里面包含logtime字段,是日期类型。 二、创建StudentData.class实体类,定义日期类型变量,代码如下: @NoArgsConstructor public class StudentData implements Serializable { private static fin...
public static void main(String[] args) { Simple Date Format sdf = new Simple Date Format("yyyy-MM-dd"); Calendar calendar = Calendar .getInstance(); Date d... Simple Date Format sdf = new Simple Date Format("yyyy-MM-dd"); String s = sdf.format(new Date ()); Date date = s...
问题场景: mysql数据库中字段logintime数据类型为 date time。在 java 项目中直接获取 String time = map.get("logintime").toString(); time值为 2021-01-02 00:00:00.0 现在需要只显示 年月日 ,不显示时间。 使用日期格式化工具Simple Date Format 工具类 String time = map.get("logintime").toString(); Simple Date Format sdf =new
方法一:直接ctrl+d,找到对应表的数据结构,手动更改,这会影响原始数据,如果没关系的话,可以采用 方法二:用sql语句:把表lizi里的日期字段改为 date 类型,强烈不建议采用,我只改一条数据就花了1s多 alter table lizi modify column 日期 date 方法三:参考博客:mysql只获取时间的 年月日 ,这种方法 select date _format(日期,'%Y-%
### 回答1: java . util . Date Java 提供的日期和时间的类,它包含了日期和时间的信息。它可以表示从1970年1月1日00:00:00以来经过的毫秒数。由于 java . util . Date 是不可变的类,因此它的操作非常有限。 而 java .sql. Date java . util . Date 的一个子类,它是专门用于操作数据库中日期类型数据的类。 java .sql. Date 继承了 java . util . Date 的大部分方法,但是它只保存 年月日 的信息,不包含具体的 时分秒 java .sql. Date 可以通过 java .sql包提供的接口和类与数据库交互。 因为 java .sql. Date 是专为数据库而设计的,它有很多特定的用法。比如可以将 java .sql. Date 从数据库中读取出来,并用作 Java 程序中的日期类型。此外,它还可以将 Java 程序中的日期类型转换为数据库中的日期类型,方便进行数据库操作。 总的来说, java . util . Date Java 中常用的日期和时间类型,而 java .sql. Date 是专为数据库设计的日期类型,在与数据库交互时非常有用。 ### 回答2: java . util . Date Java 中的一个类,它表示一个特定的时间点,包括年、月、日、时、分、秒等信息。它用于表示一个精确到毫秒的时间点,并且它没有与时区相关的信息。在使用 java . util . Date 时,我们可以通过构造方法设置指定的 年月日 时分秒 ,也可以使用现有的时间点创建 对象 java .sql. Date java . util . Date 的一个子类,用于在 Java 程序和数据库之间传递日期数据。它继承了 java . util . Date 的基本功能,同时还提供了一些用于处理数据库日期的特定方法。在 Java 中, java .sql. Date 可以通过使用 java . util . Date 进行实例化,或者通过调用 java .sql. Date 的构造方法指定 年月日 java . util . Date java .sql. Date 在功能上有着一些区别。首先, java . util . Date 中包含的时间信息更加详细,可以表示年、月、日、时、分、秒、毫秒等。而 java .sql. Date 只包含年、月、日的信息,没有 时分秒 。其次, java . util . Date 可以用于处理任意的时间点,而 java .sql. Date 只能用于处理日期,时间部分会被忽略。另外,由于 java .sql. Date 主要用于数据库交互,它具有特定的格式,可以与数据库中的日期字段进行交互。 在实际应用中,我们通常使用 java . util . Date 来表示一个具体的时间点,比如记录日志的时间、定时任务的执行时间等。而在与数据库交互时,我们可以使用 java .sql. Date 来传递、存储和检索日期数据。 ### 回答3: java . util . Date java .sql. Date 都是 Java 中用于表示日期和时间的类,但在使用上有一些区别。 java . util . Date Java 中最基本的日期和时间类,它包含了日期和时间的信息,可以表示从1970年1月1日00:00:00开始的时间戳。它可以表示精确到毫秒级别的时间,但是在处理日期和时间的各种操作时,它的功能相对较弱,需要借助其他类库进行处理。在 Java 8之后, java . util . Date 已经被废弃,推荐使用新的日期和时间API( java .time包)。 java .sql. Date java . util . Date 的一个子类,它用于在 Java 和数据库之间传递日期。它的底层实现是基于long类型的时间戳,但它对应的数据库类型是SQL中的 DATE 类型,只包含日期部分,不包含具体的时间信息。它的使用场景通常是在与数据库交互的过程中,需要将日期信息保存到数据库或从数据库中获取日期信息。 在实际使用中,如果我们需要进行日期和时间的大部分操作,推荐使用新的日期和时间API( java .time包),例如 Local Date Local Time和 Local Date Time等类,它们提供了更多的功能和操作,而且更易于使用和理解。而对于与数据库交互时,如果数据库的数据类型是 DATE 类型,我们可以使用 java .sql. Date 来表示和传递日期信息。