import java.util.Date;
Date firstDate;
我不知道如何初始化firstDate
,例如对于String类型你会说
String line1="First line"
但日期的格式是什么?你能举个例子吗?
这里是Oracle网站上Date类的Javadoc:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
如果您向下滚动到“构造函数概要”部分,您将看到可以实例化Date对象的不同选项。与Java中的所有对象一样,您可以使用以下代码创建一个新对象:
Date firstDate = new Date(ConstructorArgsHere);
现在你有一点选择。如果你不传入任何参数,只需执行以下操作:
Date firstDate = new Date();
它将表示您调用它的确切日期和时间。以下是您可能想要使用的其他构造函数:
Date firstDate1 = new Date(int year, int month, int date);
Date firstDate2 = new Date(int year, int month, int date, int hrs, int min);
Date firstDate3 = new Date(int year, int month, int date, int hrs, int min, int sec);
java.util.Date构造函数带有参数,例如new Date(int year, int month, int date, int hrs, int min)已被弃用,最好不要再使用它。Oracle文档更倾向于使用java.util.Calendar的方式。因此,您可以通过getTime()方法设置任何日期并实例化Date对象。
Calendar calendar = Calendar.getInstance();
calendar.set(2018, 11, 31, 59, 59, 59);
Date happyNewYearDate = calendar.getTime();
请注意月份从0开始计数
public Date StringToDate(String s){
Date result = null;
try{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
result = dateFormat.parse(s);
}
catch(ParseException e){
e.printStackTrace();
}
return result ;
}
Date date = StringToDate("2015-12-06 17:03:00");
更多解释请查看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
。该链接提供了有关Java中SimpleDateFormat类的详细信息,可帮助您更好地理解相关内容。使用Instant
代替java.util.Date
。
Instant.now() // Capture current moment as seen in UTC.
Date
,请进行转换。java.util.Date.from( Instant.now() )
Java 8及更高版本内置的java.time框架已经取代了java.util.Date和.Calendar类。这些新类是一个巨大的改进,受到成功的Joda-Time库的启发。
java.time类倾向于使用静态工厂方法而不是构造函数来实例化对象。
要获取当前时刻的UTC时间:
Instant instant = Instant.now();
获取特定时区的当前时间:
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );
如果你必须使用其他尚未更新为java.time类型的类,那么需要使用Instant
进行转换,以获得一个java.util.Date。
java.util.Date date = java.util.Date.from( zdt.toInstant() );
java.time框架内置于Java 8及更高版本中。这些类替代了老旧的、问题多多的遗留日期时间类,例如java.util.Date
、Calendar
和 SimpleDateFormat
。
欲知详情,请参见Oracle教程。此外,您还可以在Stack Overflow上搜索许多示例和解释。规范为JSR 310。
Joda-Time项目现已进入维护模式,建议向java.time类进行迁移。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。无需字符串,也不需要java.sql.*
类。
从何处获取java.time类?
Interval
,YearWeek
,YearQuarter
等。欲了解更多,请参见此处。Date firstDate = new Date();
如果您想从字符串中获取它,可以使用SimpleDateFormat,例如:
String dateInString = "10-Jan-2016";
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
//handle exception if date is not in "dd-MMM-yyyy" format
}
2020更新:对于简单日期,请使用LocalDate。
然后,我们将按以下方式初始化日期23 Oct 1988:
LocalDate date = LocalDate.of(1988,10,23);
Calendar calendar = Calendar.getInstance();
//To Initialize Date to current Date
Date date = calendar.getTime();
//To Initialize Date to a specific Date of your choice (here I'm initializing the date to 2022-06-15)
calendar.set(2022, Calendar.JUNE, 15);
Date date = calendar.getTime();
Calendar
类设计不佳且过时已久。此外,您可能无法从getInstance
获得GregorianCalendar
对象,导致set(2022, Calendar.JUNE, 15)
给出荒谬的结果。而SimpleDateFormat
更糟糕。请改用Basil Bourque的答案。 - Ole V.V.
Date firstDate = new Date();
。然而,还有其他构造函数可供使用,你可以直接提供一个long
类型的时间或者一个类似于 '2015-12-06 17:01:00' 的string
。 - Tobias BaumeisterDate
被认为是过时的。你应该使用java.time
包中的类。有关更多信息,请阅读上述问题的这个答案。 - MC Emperor