首页
学习
活动
专区
工具
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.8K20

【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 构造函数 , 如果 被组合对象 多个 , 则 按照 成员变量 定义顺序 进行初始 ; 注意 : 此处 不是按照 初始列表 顺序 进行初始 ; 析构函数执行顺序

24430
  • 【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

    22320

    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.

    28320

    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实现中使用了成员变量来传递参数,这就造成在多线程时候会出现错误。

    62330

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

    47450

    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反射方法

    36030

    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语言

    59220

    Java学习之Spring框架入门篇

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

    23410

    Java基础-面向对象(二)

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

    39310

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

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

    20330
    领券