如何在java中初始化日期类型的变量?

owl*_*mer 7 java variables date

import java.util.Date;
Date firstDate; 
Run Code Online (Sandbox Code Playgroud)

我不知道如何初始化firstDate,例如你说的String

String line1="First line" 
Run Code Online (Sandbox Code Playgroud)

但是你能给我一个例子,日期的格式是什么?

小智 7

以下是Oracle网站上用于Date类的Javadoc:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
如果向下滚动到"构造函数摘要",你会看到如何实例化Date对象的不同选项.与Java中的所有对象一样,您可以使用以下内容创建一个新对象:

Date firstDate = new Date(ConstructorArgsHere);
Run Code Online (Sandbox Code Playgroud)

现在你有一点选择.如果你没有传入任何参数,只是这样做,

Date firstDate = new Date();
Run Code Online (Sandbox Code Playgroud)

它将代表您调用它的确切日期和时间.以下是您可能想要使用的一些其他构造函数:

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);
Run Code Online (Sandbox Code Playgroud)

  • 小心,不建议使用这最后3个初始化 (4认同)

小智 6

要从字符串解析日期,您可以选择您希望它具有的格式。例如:

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 ;
}
Run Code Online (Sandbox Code Playgroud)

如果你现在想使用这个方法,你将不得不使用这样的东西

Date date = StringToDate("2015-12-06 17:03:00");
Run Code Online (Sandbox Code Playgroud)

有关更多解释,您应该查看http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html


Bas*_*que 6

tl;博士

使用Instant,替代java.util.Date

Instant.now()  // Capture current moment as seen in UTC.
Run Code Online (Sandbox Code Playgroud)

如果你必须有一个Date,转换。

java.util.Date.from( Instant.now() ) 
Run Code Online (Sandbox Code Playgroud)

时间

java.util.Date 和 .Calendar 类已被内置于 Java 8 及更高版本中的 java.time 框架所取代。受成功的 Joda-Time 库的启发,新类是一个巨大的改进。

java.time 类倾向于使用静态工厂方法而不是构造函数来实例化对象。

要获取 UTC 时区的当前时刻:

Instant instant = Instant.now();
Run Code Online (Sandbox Code Playgroud)

要获取特定时区的当前时刻:

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );
Run Code Online (Sandbox Code Playgroud)

如果您必须有一个 java.util.Date 与尚未针对 java.time 类型更新的其他类一起使用,请从Instant.

java.util.Date date = java.util.Date.from( zdt.toInstant() );
Run Code Online (Sandbox Code Playgroud)

Java 中的日期时间类型表,包括现代的和传统的。


关于java.time

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 类?

ThreeTen-额外项目与其他类扩展java.time。该项目是未来可能添加到 java.time 的试验场。你可能在这里找到一些有用的类,比如IntervalYearWeekYearQuarter,和更多


Sci*_*cco 5

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();
Run Code Online (Sandbox Code Playgroud)

请注意,月份号从0开始


SMA*_*SMA 4

要初始化为当前日期,您可以执行以下操作:

Date firstDate = new Date();
Run Code Online (Sandbox Code Playgroud)

要从 String 中获取它,您可以使用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
}
Run Code Online (Sandbox Code Playgroud)