将java.util.Date转换为字符串
我想在Java中把java.util.Date
对象转换为String
。
其格式为2010-05-30 22:15:52
。
394
18
我想在Java中把java.util.Date
对象转换为String
。
其格式为2010-05-30 22:15:52
。
使用
DateFormat#format
方法将一个日期转换成**字符串。来自http://www.kodejava.org/examples/86.html
Commons-lang DateFormatUtils充满了好东西(如果你的classpath里有commons-lang的话)。
tl;dr
java.time
现代的方法是使用java.time类,它现在取代了麻烦的旧日期-时间类。
首先将你的
java.util.Date
转换为Instant
。Instant
](http://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)类以[UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)表示时间轴上的一个时刻,其分辨率为[纳秒](https://en.wikipedia.org/wiki/Nanosecond)(最多为小数点后的九(9)位)。java.time与java.time之间的转换由添加到旧类中的新方法来完成。
你的
java.util.Date
和java.time.Instant
都是以UTC为单位。 如果你想把日期和时间看成UTC,那就这样吧。 调用toString
生成一个标准[ISO 8601][2]格式的字符串。对于其他格式,您需要将
Instant
转换为更灵活的[OffsetDateTime
][3]。要想得到一个你所需格式的字符串,请指定一个[
DateTimeFormatter
][4]。 你可以指定一个自定义的格式。 但我会使用一个预定义的格式([ISO_LOCAL_DATE_TIME
][5]),并在其输出中用空格代替T
。对了,我不推荐这种故意丢失[offset-from-UTC][6]或时区信息的格式。 对该字符串的日期-时间值的含义产生歧义。
同时也要小心数据丢失,因为在你的String的日期-时间值表示中,任何小数点的秒都会被忽略(有效地截断)。
如果要通过某个特定区域的[挂钟时间][7]来查看同一时刻,可以应用一个
ZoneId
来获得一个ZonedDateTime
。要生成一个格式化的字符串,请执行与上述相同的操作,但将 "odt "替换为 "zdt"。
如果执行这段代码的次数非常多,你可能想提高效率,避免调用
String::replace
。 丢掉这个调用也会让你的代码更短。 如果需要,可以在自己的DateTimeFormatter
对象中指定自己的格式化模式。 将这个实例缓存为一个常量或成员,以便重用。通过传递实例来应用该formatter。
关于java.time
java.time框架内置于Java 8及更新版本中。 这些类取代了麻烦的旧的日期-时间类,如
java.util.Date
、.Calendar
、&java.text.SimpleDateFormat
。Joda-Time](http://www.joda.org/joda-time/)项目,现在处于[维护模式](https://en.wikipedia.org/wiki/Maintenance_mode),建议迁移到java.time。
要了解更多,请看Oracle教程。 并在Stack Overflow中搜索许多例子和解释。
java.time的大部分功能都回移植到了Java 6 &.7中。 7的ThreeTen-Backport,并在ThreeTenABP中进一步适配到Android(参见如何使用...)。
ThreeTen-Extra](http://www.threeten.org/threeten-extra/)项目扩展了java.time的附加类。 这个项目是对java.time未来可能增加的类的一个试验场。
1:
[2]: https://en.wikipedia.org/wiki/ISO_8601 [3]: http://docs.oracle.com/javase/8/docs/api/java/time/OffsetDateTime.html [4]: http://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html [5]: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE_TIME [6]: https://en.wikipedia.org/wiki/UTC_offset [7]: https://en.wikipedia.org/wiki/Wall-clock_time
Altenative one-liners in plain-old java:
为什么不使用 Joda (org.joda.time.DateTime)? 它基本上就是一个单行本。
看起来你在寻找SimpleDateFormat。
格式: yyyy-MM-dd kk:mm:ss
在一次拍摄中;)
获取日期
获取时间
获取日期和时间
编码快乐:)
如果你只需要日期中的时间,你可以直接使用String的功能。
这将自动剪掉字符串的时间部分,并将其保存在
timeString
内。最简单的使用方法如下。
其中"yyy-MM-dd'T'HH:mm:ss" 是阅读日期的格式
输出。 Sun Apr 14 16:11:48 EEST 2013年4月14日
注:HH与hh
下面是使用新的[Java 8 Time API][1]来格式化[legacy][2]
java.util.Date
的例子。DateTimeFormatter
的好处是,它可以有效地缓存,因为它是线程安全的(不像SimpleDateFormat
)。[预定义fomatters列表和模式符号参考][3]。
信用。
https://stackoverflow.com/questions/22463062/how-to-parse-format-dates-with-localdatetime-java-8
https://stackoverflow.com/questions/25376242/java8-java-util-date-conversion-to-java-time-zoneddatetime
https://stackoverflow.com/questions/25229124/format-instant-to-string
https://stackoverflow.com/questions/30234594/whats-the-difference-between-java-8-zoneddatetime-and-offsetdatetime
[1]: http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html [2]: https://docs.oracle.com/javase/tutorial/datetime/iso/legacy.html [3]: [3]:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#predefined
试试这个
产出:
更多关于java中的日期和时间格式化,请参考以下链接
[Oracle帮助中心][1]
[java中的日期时间示例][2]
[1]: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html [2]: https://www.flowerbrackets.com/java-date-to-string/
试试这个
或效用函数
从[在Java中转换日期为字符串][1]
[1]: http://javabycode.com/java-core/java-common/convert-date-to-string-in-java.html
单行选择
这个选项得到了一个简单的单行来写实际日期。