Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取java格式的日期类型对象_Java_Date - Fatal编程技术网

获取java格式的日期类型对象

获取java格式的日期类型对象,java,date,Java,Date,正如我们所知,我们可以使用Java.util.date或Calendar实例或使用GregoriaCalendar实例来获取日期 使用类“SimpleDateFormat”我们可以parse()或format()函数我们的日期或字符串 正如我们所知,使用parse()或format()函数,我们仅以字符串的形式获得输出 java中是否有任何选项可用于获取特定格式(如'yyyy-MM-dd'或任何其他格式)的Date实例,但最终输出应为该格式的Date类型?否它在Date类的toString()方

正如我们所知,我们可以使用
Java.util.date
Calendar
实例或使用
GregoriaCalendar
实例来获取日期

使用类“
SimpleDateFormat
”我们可以
parse()
format()
函数我们的
日期
字符串

正如我们所知,使用
parse()
format()
函数,我们仅以
字符串的形式获得输出


java中是否有任何选项可用于获取特定格式(如'yyyy-MM-dd'或任何其他格式)的
Date
实例,但最终输出应为该格式的
Date
类型?

它在
Date
类的
toString()方法中固定,如果您严格希望此功能完全没有格式,则可以扩展日期。它只是自标准基准时间(即1970年1月1日00:00:00 GMT)以来的时间表示

只能使用所需格式获取日期的字符串表示形式


另外,SDF的
parse()
方法将日期的字符串表示形式解析为日期对象
format()
是提供日期对象的格式化字符串表示形式的方法。

您可以扩展
java.util.Date
类,并重写默认的
toString()
方法。您可以实现该模式(或者该模式-我不确定是否真的有区别)。

您的问题的简短答案是否定的。类
日期
Gregoriacalendar
不包括格式-您必须单独使用格式,可以作为
字符串
简化格式


如果您确实希望能够传递一个既有日期又有格式的对象,那么您可以创建自己的类,该类将
GregoriaCalendar
SimpleDataFormat
作为字段。您可以给它一个
toString
方法,该方法使用
SimpleDataFormat
格式化
GregoriaCalendar

您的评论表明您忽略了日期时间对象不是字符串这一点。在java.util.Date和中,日期时间表示为自。在Java8java.time.*中,日期时间可能是从纪元开始的纳秒。但这些都与字符串无关。我们创建字符串作为输出,作为毫秒/纳秒的转换,对人类有意义。

避免遗留日期时间类 与最早版本的Java捆绑在一起的旧日期时间类设计拙劣、混乱且麻烦。避开它们。现在被java.time类取代

Instant
正如其他人所说,一个
java.util.Date
代表UTC时间线上的一个时间点,分辨率为毫秒。
java.util.Date
完全没有格式

您可以将
Date
对象转换为
java.time.Instant
。该类表示时间线上的一个时刻,分辨率为

ZoneDateTime
指定一个时区,在您的场景中获取日期是有意义的。时区对于确定日期至关重要;在任何特定的时刻,全球各地的日期都会因地区而异

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
LocalDate
现在,如果您想使用不带时间和时区的仅日期值,请从
ZonedDateTime
对象中提取
LocalDate
对象

LocalDate ld = zdt.toLocalDate();
生成字符串 要以您请求的格式生成表示此
LocalDate
值的字符串,只需调用
toString
。YYYY-MM-DD格式是标准ISO 8601格式。在解析/生成字符串时,java.time类默认使用ISO 8601格式。不要将格式化字符串与日期时间对象混淆。日期时间对象没有格式,只有字符串有格式

String output = ld.toString();
如果需要其他格式,请在堆栈溢出中搜索类
DateTimeFormatter

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如
java.util.date
.Calendar
,&
java.text.SimpleDateFormat

该项目现已启动,建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释

大部分java.time功能都在中向后移植到java 6和7,并进一步适应于中(请参阅)


该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如
Interval
YearWeek
YearQuarter
,等等。

忘记“SimpleDataFormat”是否有任何选项可以获取任何格式的日期对象?因为我需要在外部API中传递特定格式的日期对象?@user3097955-我的答案的第一行应该回答您的疑问<代码>日期
没有自己的格式。
String output = ld.toString();