首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

不推荐使用java.util.Date类的参数化构造函数.有什么选择?

在Java中,java.util.Date类已经被认为是过时的,因为它不支持时区和格式化。相反,推荐使用java.time包中的类,如LocalDateLocalDateTimeZonedDateTime等。这些类提供了更好的性能、更好的可读性和更好的时区支持。

以下是一些建议的替代方案:

  1. LocalDate:用于表示不包含时间的日期,例如生日、纪念日等。
代码语言:java
复制
LocalDate date = LocalDate.of(2022, 1, 1);
  1. LocalDateTime:用于表示包含日期和时间但不包含时区的时间点。
代码语言:java
复制
LocalDateTime dateTime = LocalDateTime.of(2022, 1, 1, 12, 0);
  1. ZonedDateTime:用于表示包含日期、时间和时区的时间点。
代码语言:java
复制
ZonedDateTime zonedDateTime = ZonedDateTime.of(2022, 1, 1, 12, 0, 0, ZoneId.of("Asia/Shanghai"));
  1. Instant:用于表示时间戳,即从1970年1月1日00:00:00 UTC到指定时间的秒数。
代码语言:java
复制
Instant instant = Instant.now();
  1. Period:用于表示日期之间的差异,例如两个日期之间的天数。
代码语言:java
复制
LocalDate startDate = LocalDate.of(2021, 1, 1);
LocalDate endDate = LocalDate.of(2022, 1, 1);
Period period = Period.between(startDate, endDate);
  1. Duration:用于表示两个时间点之间的差异,例如两个时间之间的秒数。
代码语言:java
复制
LocalDateTime startDateTime = LocalDateTime.of(2022, 1, 1, 0, 0);
LocalDateTime endDateTime = LocalDateTime.of(2022, 1, 1, 12, 0);
Duration duration = Duration.between(startDateTime, endDateTime);

总之,避免使用java.util.Date类的参数化构造函数,而是使用java.time包中的类来处理日期和时间。这些类提供了更好的性能、更好的可读性和更好的时区支持。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Kotlin】类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数中定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin 类中 , 可以在 类声明 时 在 类名后...定义 " 主构造函数 " ; 在 主构造函数 中 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ; 在 主构造函数 中 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 的名称..., 每个次构造函数都可以有不同的参数组合 ; 定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 的 参数设置 参数值 ; 次构造函数中可以实现代码逻辑 , 作为主构造函数的补充 ; 代码示例...---- 在定义 构造函数 时 , 可以为 构造函数 的参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入的值 , 如果用户没有传入值 则 使用该 默认值 ; 如果 构造函数 参数有 指定默认值..., 可以不为其传递 值参 , 构造函数中跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ; 代码示例 : class Hello( // 主构造函数, 直接在主构造函数中定义属性

4.9K20

【C++】构造函数初始化列表 ② ( 构造函数 为 初始化列表 传递参数 | 类嵌套情况下 的 构造函数 析构函数 执行顺序 )

一、构造函数 为 初始化列表 传递参数 1、构造函数参数传递 构造函数 初始化列表 还可以使用 构造函数 中的参数 ; 借助 构造函数 中的参数列表 , 可以为 初始化列表 传递参数 ; 在下面的代码中..., B 类的 有参构造函数 , 传入了 3 个参数 , 这三个参数都不在函数体中使用 , 而是在 参数列表中使用 , // 构造函数中的参数可以作为 B(int age, int ageOfA,..., 类 A 定义了 2 个参数的 有参构造函数 ; 类 B 定义了 无参构造函数 , 但是在该 无参构造函数 中 , 定义了函数列表 B() : m_age(10), m_a(10, 150) , 在该函数列表中..., 执行了 A 的构造函数 ; 类 B 中还定义了 有参构造函数 , 接收 3 个参数 , 分别作为 m_age 成员的值 , 和 A 类型成员对象的 有参构造函数 的 2 个参数 , 这是 使用了..., 先执行 被组合对象 A 的构造函数 , 如果 被组合对象 有多个 , 则 按照 成员变量 的定义顺序 进行初始化 ; 注意 : 此处 不是按照 初始化列表 的顺序 进行初始化 ; 析构函数执行顺序

26230
  • 【C++】C++ 类中的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

    , 这个增加的参数是 对象本身的指针 ; 在 Student 类中 , 定义了如下函数 : // 成员函数 转为 全局函数 , 多了一个参数 Student* pThis 作为第一个参数 void...; } 详细代码 , 参考最后的完整代码示例 ; 二、有参构造函数设置默认参数值 ---- 为 Student 类定义了有参构造函数 , 则其默认的无参构造函数 , 就不会生成 ; // 带参构造函数..." << endl; } 此时 , 如果要创建 Student 对象 , 只能调用上述 有参构造函数 , 如果使用 Student s2 的方式调用 默认构造函数 创建 Student 对象 , 就会报错...; 如下带参数的构造函数 , 并且为其 有参构造函数 的参数 设置一个默认值 , 此时就可以使用 类名 对象名 的方式定义对象变量 ; class Student { public: // 带参构造函数...创建 Student 实例对象 Student s(18, 180); // 打印对象情况 s.print(); // 调用有参构造函数 , 有参构造函数参数使用默认值 Student s2

    23820

    java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数六、使用 builder 模式解决构造方法参数过多的情况

    函数式接口是指有且仅有一个抽象方法的接口,如上面的Runnable只具有一个抽象方法void run(){},就是一个函数式接口,所以函数式接口本质上和普通接口没有什么区别。...应该为这样的类编写什么样的构造方法或静态工厂?...传统上,程序员使用了可伸缩(telescoping constructor)构造方法模式,在这种模式中,只提供了一个只所需参数的构造函数,另一个只有一个可选参数,第三个有两个可选参数,等等,最终在构造函数中包含所有可选参数...如果客户端意外地反转了两个这样的参数,编译器并不会抱怨,但是程序在运行时会出现错误行为 当在构造方法中遇到许多可选参数时,另一种选择是 JavaBeans 模式,在这种模式中,调用一个无参数的构造函数来创建对象...它是 Builder模式 的一种形式。客户端不直接调用所需的对象,而是调用构造方法 (或静态工厂),并使用所有必需的参数,并获得一个 builder 对象。

    1.6K10

    【C++】继承 ⑥ ( 继承中的构造函数和析构函数 | 类型兼容性原则 | 父类指针 指向 子类对象 | 使用 子类对象 为 父类对象 进行初始化 )

    地方 , 都可以使用 " 公有继承 " 的 派生类 ( 子类 ) 对象 替代 , 该 派生类 ( 子类 ) 得到了 除 构造函数 和 析构函数 之外的 所有 成员变量 和 成员方法 ; 功能完整性 :..." 公有继承 " 的 派生类 ( 子类 ) 本质上 具有 基类 ( 父类 ) 的 完整功能 , 使用 基类 可以解决的问题 , 使用 公有继承派生类 都能解决 ; 特别注意 : " 保护继承 " 和..." 应用场景 : 直接使用 : 使用 子类对象 作为 父类对象 使用 ; 赋值 : 将 子类对象 赋值给 父类对象 ; 初始化 : 使用 子类对象 为 父类对象 初始化 ; 指针 : 父类指针 指向...); } 2、使用 子类对象 为 父类对象 进行初始化 定义父类对象 , 可以直接使用 子类对象 进行初始化操作 ; // II....(p_parent); // 接收父类引用参数 fun_reference(*p_parent); // I.

    30920

    2019年Java中高级面试题总结(7),228道系列查漏补缺!

    84、Java 中,怎么在格式化的日期中显示时区? 85、Java 中 java.util.Date 与 java.sql.Date 有什么区别? 86、Java 中,如何计算两个日期之间的差距?...109、什么是“依赖注入”和“控制反转”?为什么有人使用? 110、抽象类是什么?它与接口有什么区别?你为什么要使用过抽象类? 111、构造器注入和 setter 依赖注入,那种方式更好?...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,我强力推荐 joda-time 库。 83、Java 中如何格式化一个日期?...如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果。因此,从日期、时间处理的所有实践来说,强力推荐 joda-time 库。...首先,这是编译器的要求,如果不这么做,无法通过编译。其次,面向对象的编程,其中继承有个大原则,任何子类的对象都可以当成父类的对象使用。 107、什么情况下会违反迪米特法则?为什么会有这个问题?

    1.6K00

    Java时间操作代码实现

    我们发现只有Date()、Date(long date) 两个方法目前是可以正常使用的,其他的方法都已经被设定为过时,并且都是从jdk1.1开始不推荐使用,而是推荐其他方法(下面学习),所以我们只需要关注这两个方法即可...,官方不推荐使用,所以暂时不用管它。...在这四个构造函数中第二个是使用的最多的(就我目前的经验),所以我的重点也关注于它,其中的参数pattern是字符串形式的时间格式,它的格式各种各样,我们的重点应该放在这个格式上。...仅当匹配的字符串格式和构造函数中的pattern格式不匹配时才会抛异常。...只是因为Calendar累的概念复杂,牵扯到时区与本地化等等,Jdk的实现中使用了成员变量来传递参数,这就造成在多线程的时候会出现错误。

    62930

    Java9-day01视频第一部分【分享优质技能视频】

    覆盖重写 如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。...1.4 Objects类 在刚才IDEA自动重写equals代码中,使用到了 java.util.Objects 类,那么这个类是什么呢?...继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。...tips: 由于我们处于东八区,所以我们的基准时间为1970年1月1日8时0分0秒。 简单来说:使用无参构造,可以自动设置当前系统时间的毫秒时刻;指定long类型的构造参数,可以自定义毫秒时刻。...构造方法 由于DateFormat为抽象类,不能直接使用,所以需要常用的子类 java.text.SimpleDateFormat 。这个类需要一个模式(格式)来指定格式化或解析的标准。

    25720

    【JavaSE专栏41】Java常用类 Date 解析,高效处理日期问题

    Date类的主要功能包括以下 5 点,请同学们认真学习。 获取当前时间:使用无参的构造方法可以创建一个表示当前时间的 Date 对象。...---- 四、util的Date和sql的Date类有什么区别 Java 中有两个不同的 Date 类,一个是 java.util.Date,另一个是 java.sql.Date,它们之间有以下区别。...需要注意的是,在使用 Java 的新日期时间 API(如java.time包中的类)时,不再推荐使用 java.util.Date和java.sql.Date,而是使用新的类来表示和处理日期和时间,这些新的类提供了更丰富的功能和更好的性能...获取当前时间:使用无参构造函数可以创建一个表示当前时间的 Date 对象,可以用于记录事件发生的时间。...五、Date类有什么局限性? Date 类存在一些局限性,例如: 它不支持国际化和本地化,不同的地区可能使用不同的日期和时间格式,Date 类无法自动适应这些差异。

    51650

    Java反射:用最直接的大白话来聊一聊Java中的反射机制

    3、使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象 上边是Java中常见的创建对象的三种方式,其实除了上边的三种还有另外一种方式,就是接下来我们要讨论的 “反射” 1、...很多框架里都有类似的配置 2、解剖类 我们知道一个类里一般有构造函数、方法、成员变量(字段/属性)这三部分组成 翻阅API文档,可以看到 Class对象提供了如下常用方法: public Constructor...2.1反射构造方法 2.1.1反射无参的构造函数 可以看到 默认的无参构造方法执行了 从上边的例子看出,要想反射,首先第一步就是得到类的字节码 所以简单说一下得到类的字节码的几种方式 (1)、Class.forName...(“com.cj.test.Person”); 这就是上边我们用的方式 (2)、对象.getClass(); (3)、类名.class; 2.1.2反射“一个参数”的构造函数 2.1.3反射“多个参数...(int.class);//读取私有的构造函数,用这个方法读取完还需要设置一下暴力反射才可以 c.setAccessible(true);//暴力反射 2.1.5反射得到类中所有的构造函数 2.2反射类中的方法

    38030

    Java Date 和 Calendar

    值得注意的是我们使用了Date 构造函数创建一个日期对象,这个构造函数没有接受任何参数,而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期。...格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分。EEEE是星期,MMMM是月,dd是日,yyyy是年,字符的个数决定了日期是如何格式化的。...我们将再次以格式化字符串"MM-dd-yyyy" 调用SimpleDateFormat类。但是这一次,我们使用格式化解析而不是生成一个文本日期数据。...  有了这些Date 和Calendar 类的例子,你应该能够使用 java.util.Date,java.text.SimpleDateFormat, java.util.GregorianCalendar...测试代码下载 参考推荐: Java语言的Calendar和Date类 Java 之 Date 和 Calendar 实例 JAVA Calendar详解 Date类型的转换和运算 “Java语言的

    59320

    Java学习之Spring框架入门篇

    它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。...无需在new实现类的实例化对象。 Bean标签详解: 作用: 用于配置对象让 spring 来创建的。 默认情况下它调用的是类中的无参构造函数。如果没有无参构造函数则不能创建成功。...class: 指定类的全限定类名。用于反射创建对象。默认情况下调用无参构造函数。 *scope: 指定对象的作用范围。...0X04 依赖注入 bean对象的创建来于容器,bean对象中的所有属性,都有容器来注入。下面来看看常用的几种注入方式 构造注入 构造注入:顾名思义,就是使用类中的构造函数,给成员变量赋值。...constructor-arg标签属性: index:指定参数在构造函数参数列表的索引位置 type:指定参数在构造函数中的数据类型 name:指定参数在构造函数中的名称 value:它能赋的值是基本数据类型和

    23810

    Java基础-面向对象(二)

    构造器作用: 为对象进行初始化(成员变量)工作。 构造器是一种特殊的方法: 构造器的方法名必须和类名一致!...如果已定义则编译器不会 添加无参数构造方法!...静态初始化块中不能访问非static成员。 pakage 为什么需要package? 为了解决类之间的重名问题。 为了便于管理类:合适的类位于合适的包! package怎么用?...java.net:包含执行与网络相关的操作的类。 java.io:包含能提供多种输入/输出功能的类。 java.util:包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。...Import 为什么需要import? 如果不适用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不 利于编写和维护。

    39410

    《JavaSE-第七章》之抽象的类-实例的对象-合理的封装

    所以类是Java中的最基本单位,正是有了不同功能的类才构成了Java世界,那么类又是由什么构成的?答案是属性与行为。属性对应类中的成员变量,行为对应成员方法。...修改后形参名不小心与成员变量名相同,那函数体中到底是谁给谁赋值?成员变量给成员变量?参数给参数?参数给成员变量?成员变量参数?估计自己都搞不清楚了。...局部变量必须要初始化才能使用,为什局部变量必须要初始化才能使用,为什么字段声明之后没有给值依然可以使用? 构造方法 在java中,有一种特殊的方法被称为构造方法,也被称为构造器等。...在java中,通过提供构造器,来为对象进行初始化。构造器只能在对象创建时期调用一次,保证对象初始化的进行。构造器比较特殊,它没有参数类型和返回值。...成员变量和局部变量的区别 区别 成员变量 局部变量 类中的位置不同 类中,方法外 常见于方法中 初始化不同 有默认的初始化值 没有,使用前必须初始化 内存位置不同 堆内存 栈区 生命周期不同 随着对象的创建的而存在

    21230
    领券