gpt4 book ai didi

java - 日期和日历java

转载 作者:行者123 更新时间:2023-11-29 06:17:56 25 4
gpt4 key购买 nike

class Employee
{
private Date doj;

public Employee (Date doj)
{
this.doj=doj;
}
public Date getDoj()
{
return doj;
}
}


class TestEmployeeSort
{
public static List<Employee> getEmployees()
{
List<Employee> col=new ArrayList<Employee>();
col.add(new Employee(new Date(1986,21,22));
}
}

在上面的代码中,我使用 Date 来设置日期。我想知道如何使用日历功能来做到这一点。我知道我可以使用 getInstance() 并设置日期。但我不知道如何实现。请帮助我知道如何使用日历功能设置日期

最佳答案

tl;dr

LocalDate.of( 1986 , Month.FEBRUARY , 23 )

仅限日期

DateCalendar 这两个类都不合适。

您显然想要一个没有时间和时区的仅限日期的值。相比之下,Date 类是带有 UTC 时间的日期,而 Calendar 是带有时区的日期时间。

此外,DateCalendar 都已过时,取而代之的是 java.time 类。

本地日期

LocalDate类表示没有时间和时区的纯日期值。

今天

时区对于确定日期至关重要。对于任何给定时刻,日期在全局范围内因地区而异。例如,午夜后几分钟 Paris France是新的一天,但在Montréal Québec 中仍然是“昨天” .

如果未指定时区,JVM 将隐式应用其当前默认时区。该默认设置可能随时更改,因此您的结果可能会有所不同。最好将您想要/期望的时区明确指定为参数。

指定 proper time zone name格式为continent/region,如America/Montreal , Africa/Casablanca ,或 太平洋/奥克兰。切勿使用 3-4 个字母的缩写,例如 ESTIST,因为它们不是真正的时区,不是标准化的,甚至不是唯一的( !)。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z ); // Get current date for a particular time zone.

具体日期

或指定日期。您可以通过数字设置月份,1 月至 12 月采用合理的编号 1-12,这与传统类中疯狂的从零开始的编号不同。

LocalDate ld = LocalDate.of( 1986 , 2 , 23 ) ;  // Both year and month have same numbering. 1986 is the year 1986. 1-12 is January-December. 

或者,更好的是,使用 Month预定义的枚举对象,一年中的每个月一个。提示:在整个代码库中使用这些 Month 对象,而不仅仅是一个整数,以使您的代码更加 self 记录,确保有效值,并提供 type-safety .

LocalDate ld = LocalDate.of( 1986 , Month.FEBRUARY , 23 ) ;

字符串

生成一个表示标准日期值的字符串 ISO 8601通过调用 toString 格式化:YYYY-MM-DD。对于其他格式,请参阅 DateTimeFormatter类。

String output = ld.toString() ;  // Generate a string in standard ISO 8601 format, YYYY-MM-DD.

关于java.time

java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧类 legacy日期时间类,例如 java.util.Date , Calendar , & SimpleDateFormat .

Joda-Time项目,现在在maintenance mode , 建议迁移到 java.time类。

要了解更多信息,请参阅 Oracle Tutorial .并在 Stack Overflow 中搜索许多示例和解释。规范为 JSR 310 .

从哪里获得 java.time 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于java - 日期和日历java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com