我们知道,我们可以使用Java.util.Date
或Calender
实例或使用GregorianCalendar
实例获取日期。
使用“SimpleDateFormat
”课,我们parse()
或format()
可以使用我们的Date
或String
。
我们知道使用parse()
或format()
函数时,我们只会将输出作为String
。
java中是否有任何选项可以获取特定格式的Date
实例,例如'yyyy-MM-dd'或任何其他格式,但最终输出应该是Date
类型的格式?
答案 0 :(得分:1)
Date根本没有格式。它只是自标准基准时间 The Epoch 以来的时间表示,即 1970年1月1日00:00:00 GMT 。
您只能使用SimpleDateFormat
以所需格式获取日期的字符串表示。
此外,SDF的parse()
方法将Date的String表示形式解析为Date对象。 format()
是给出Date对象的格式化String表示的方法。
答案 1 :(得分:0)
否它已在toString()
类的Date
方法中修复,如果您严格需要此功能,则可以扩展Date
答案 2 :(得分:0)
答案 3 :(得分:0)
你问题的简短回答是否定的。类Date
和GregorianCalendar
不包含格式 - 您必须单独设置格式,可以是String
或SimpleDateFormat
。
如果您真的希望能够传递同时具有日期和格式的对象,则可以创建自己的类,其中包含GregorianCalendar
和SimpleDateFormat
字段。您可以为其提供toString
方法,使用GregorianCalendar
格式化SimpleDateFormat
。
答案 4 :(得分:0)
您的评论表明您错过了日期时间对象不是字符串的观点。在java.util.Date和Joda-Time中,日期时间表示为自Epoch以来的毫秒数。在Java 8 java.time。*中,日期时间可能是自Epoch以来的纳秒。但这些都与字符串无关。我们创建字符串作为输出,作为那些毫秒/纳秒的转换,对人类有意义。
答案 5 :(得分:0)
与最早版本的Java捆绑在一起的旧日期时间类设计糟糕,令人困惑且麻烦。避免他们。现在取代了java.time类。
Instant
正如其他人所说,java.util.Date
代表UTC时间轴上的一个时刻,分辨率为毫秒。 java.util.Date
根本没有格式。
您可以将Date
个对象转换为java.time.Instant
。 Instant
类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds。
Instant instant = myUtilDate.toInstant();
ZonedDateTime
指定在您的方案中获取日期的时区。时区对于确定日期至关重要;在任何特定时刻,日期在全球范围内因地区而异。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
LocalDate
现在,如果您希望在没有时间且没有时区的情况下使用仅限日期的值,请从LocalDate
对象中提取ZonedDateTime
对象。
LocalDate ld = zdt.toLocalDate();
要以您请求的格式生成表示此LocalDate
值的字符串,只需致电toString
即可。 YYYY-MM-DD的格式是标准的ISO 8601格式。在解析/生成字符串时,java.time类默认使用ISO 8601格式。不要将格式化字符串与日期时间对象混淆。日期时间对象没有格式,只有字符串具有格式。
String output = ld.toString();
如果您需要其他格式,请搜索课程DateTimeFormatter
的Stack Overflow。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。