日期构造函数java
您好,我正在尝试在我创建的一个类中获取java的当前日期,但一切都失败了。我在很多网站上看到过 例如 日期构造函数没有参数 e、 g.日期构造函数java,java,date,Java,Date,您好,我正在尝试在我创建的一个类中获取java的当前日期,但一切都失败了。我在很多网站上看到过 例如 日期构造函数没有参数 e、 g.Date-Date=新日期() 现在在我的项目中,我试着像这样使用它,我得到了错误 构造函数日期()未定义 这怎么可能?到目前为止,我给你完整的代码 import java.sql.Date; import java.text.SimpleDateFormat; public class Utility { String title;
Date-Date=新日期()代码>
现在在我的项目中,我试着像这样使用它,我得到了错误
构造函数日期()未定义
这怎么可能?到目前为止,我给你完整的代码
import java.sql.Date;
import java.text.SimpleDateFormat;
public class Utility {
String title;
int ID;
Date date;
Utility(String t,int ID){
this.ID=ID+1;
title=t;
SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy");
Date a=new Date();// I get the error here
String date = sdf.format(a);
System.out.print(date);
}
}
我在EclipseIDE工作。你能帮我吗?你用错了Date
类
看看你们的进口货。不要使用java.sql.Date
而是使用java.util.Date
。您正在导入java.sql.Date
使用java.util.Date
您找到的示例是在使用时使用的
java.sql.Date
有两个构造函数
日期(长日期)
:使用给定的毫秒时间值构造日期对象
日期(整年、整月、整日)
:不推荐使用的日期
并且没有默认的Date()
构造函数
java.util.Date
其中包括一个没有参数的默认构造函数
Date()
:分配日期对象并对其进行初始化,使其表示分配日期的时间,以最接近的毫秒为单位
在导入类时,Eclipse将帮助您定义可能的候选类,但始终检查第一个建议是否真的是您想要的。您导入了错误的类。它是java.util.Date
而不是java.sql.Date
您还可以使用java.util.Calendar,如下所示:
Calendar c = Calendar.getInstance();
java.util.Date date = c.getTime();
tl;博士
获取今天的日期:
LocalDate.now()
以所需格式生成表示今天日期的文本:
LocalDate
.now()
.format(
DateTimeFormatter.ofPattern( "d/M/uuuu" )
)
2019年1月23日
细节
答案是正确的。您将java.sql.Date类视为java.util.Date,这是在滥用它
但是建议使用java.util.Calendar问题的答案是错误的。java.util.Date和Calendar都是出了名的坏类,设计和实现都很差。它们被现代的java.time.*JSR310类所淘汰
此外,在使用日期时间时,您应该始终考虑时区。否则,您将获得默认时区,运行时的行为可能会发生变化
java.time
如果只需要日期值,而不需要一天中的时间和时区,请使用LocalDate
LocalDate
该类表示一个只包含日期的值,不包含一天中的时间,也不包含或
时区对于确定日期至关重要。在任何一个特定的时刻,世界各地的日期都因地区而异。例如,中午夜后几分钟是新的一天,而中仍然是“昨天”
如果未指定时区,JVM将隐式应用其当前默认时区。该默认值可能在运行时(!)期间出现,因此您的结果可能会有所不同。最好将所需/预期时区明确指定为参数
以大陆/地区
的格式指定,例如美国/蒙特利尔
,非洲/卡萨布兰卡
,或太平洋/奥克兰
。切勿使用2-4个字母的缩写,如EST
或IST
,因为它们不是真正的时区,也不是标准化的,甚至不是唯一的(!)
如果要使用JVM的当前默认时区,请请求它并将其作为参数传递。如果省略,代码将变得模棱两可,我们无法确定您是否打算使用默认值,或者您是否像许多程序员一样不知道这个问题
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
或者指定一个日期。你可以用一个数字来设置月份,1-12月的数字为1-12
LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ; // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.
或者,最好使用预定义的枚举对象,一年中每个月一个。提示:在整个代码库中使用这些Month
对象,而不仅仅是一个整数,这样可以使代码更加自我记录,确保有效值,并提供更高的可用性。同上
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要java.sql.*
类
从哪里获得java.time类
- 、和更高版本-标准Java API的一部分,带有捆绑实现。
- Java9添加了一些次要功能和修复
- 及
- 大多数java.time功能都在中向后移植到Java6和Java7
-
- 更高版本的Android捆绑包实现了java.time类
- 对于早期的Android(使用java.util.Date代替java.sql.Date.FYI,像和
java.text.SimpleDateFormat
这样非常麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请看。别担心,这会发生在每个人身上。在我的IDE中,我通常会在java.util.Date之前得到java.sql.Date的建议;这样的情况就是这样经常为我使用:)不是“你也可以”,而是“你应该”!Calendar现在是一种方式,你得到了投票权。你是对的。它的大多数方法都被弃用了。但是一些框架仍然像java计时器一样使用它。@Lucas注意,表达式new Date()比Calendar.getInstance().getTime()性能好得多.Later意味着不必要的时区和字段初始化。而询问者只需要在SimpleDateFormat格式中设置历元时间,因此我不同意你的建议。谢谢。我测量了这两种格式的代码运行时间(使用System.nanoTime()而且使用日历的速度似乎慢了10倍。现代评论:更好的是,抛弃日期和刻度
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ; // Years use sane direct numbering (1986 means year 1986). Months use sane numbering, 1-12 for January-December.
LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;