如何在格式化日期字符串中包含毫秒?
您好,我正在编码以下内容:
String sph=(String) android.text.format.DateFormat.format("yyyy-MM-dd_hh-mm-ss_SSS", new java.util.Date());
我想要当前的日期和时间以及毫秒,
它给我的是:
2011-09-01_09-55-03-SSS
SSS 没有转换回毫秒...
有谁知道为什么以及应该如何在 3 位置获取毫秒?
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用以下内容:
Use the following:
太长了;博士
Instant
您正在使用麻烦的旧旧日期时间类。而是使用 java.time 类。
如果您想要 UTC 格式的日期时间,请使用
即时
课程。该类具有纳秒级的分辨率,足以满足毫秒级的分辨率。toString
方法使用DateTimeFormatter.ISO_INSTANT
格式化程序,打印小数部分中的 0、3、6 或 9 位数字,根据实际数据值的需要多少位。在 Java 8 中,当前时刻仅捕获到毫秒,但
时钟
最多可以捕获 纳秒。因此,如果您有要求,请截断为毫秒。通过TemporalUnit 指定所需的截断
如ChronoUnit.MILLIS
。ZonedDateTime
如果您想要指定时区,请应用
ZoneId
来获取ZonedDateTime
。同样,如果您需要其他格式,请在 Stack Overflow 中搜索
DateTimeFormatter
。DateTimeFormatter
如果您想强制使用三位数字表示毫秒,即使该值全为零,也可以使用
DateTimeFormatter
类指定自定义格式模式。关于 java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如
java.util.Date
,日历
, & ;SimpleDateFormat
。Joda-Time 项目,现已在 维护模式,建议迁移到java.time 类。
要了解更多信息,请参阅 Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范为 JSR 310。
您可以直接与数据库交换java.time对象。使用符合 JDBC 驱动程序 /jeps/170" rel="nofollow noreferrer">JDBC 4.2 或更高版本。不需要字符串,不需要 java.sql.* 类。
从哪里获取 java.time 类?
tl;dr
Instant
You are using troublesome old legacy date-time classes. Instead use the java.time classes.
If you want the date-time in UTC, use the
Instant
class. This class holds nanosecond resolution, more than enough for milliseconds.That
toString
method uses theDateTimeFormatter.ISO_INSTANT
formatter which prints 0, 3, 6, or 9 digits in the decimal fraction, as many as needed appropriate to the actual data value.In Java 8 the current moment is captured only up to milliseconds but a new implementation of
Clock
in Java 9 may capture up to nanoseconds. So truncate to milliseconds if that is your requirement. Specify your desired truncation by aTemporalUnit
as implemented inChronoUnit.MILLIS
.ZonedDateTime
If you want a specify time zone, apply a
ZoneId
to get aZonedDateTime
.Again if you want other formats, search Stack Overflow for
DateTimeFormatter
.DateTimeFormatter
If you want to force three digits for milliseconds, even if the value is all zeros, specify a custom formatting pattern using
DateTimeFormatter
class.About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as
java.util.Date
,Calendar
, &SimpleDateFormat
.The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
You may exchange java.time objects directly with your database. Use a JDBC driver compliant with JDBC 4.2 or later. No need for strings, no need for
java.sql.*
classes.Where to obtain the java.time classes?
尝试使用与
SimpleDateFormat
相同的格式Try using the same format with
SimpleDateFormat