Kei*_*ith 9 java time android date
嗨,我正在编写以下代码:
String sph=(String) android.text.format.DateFormat.format("yyyy-MM-dd_hh-mm-ss_SSS", new java.util.Date());
Run Code Online (Sandbox Code Playgroud)
我想要当前的日期和时间以及毫秒
它给我的是:
2011-09-01_09-55-03-SSS
Run Code Online (Sandbox Code Playgroud)
SSS没有转换回毫秒......
有谁知道为什么以及如何将毫秒数放在3位?
谢谢
Ido*_*lon 17
使用以下内容:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss_SSS");
String dateString = formatter.format(new java.util.Date());
Run Code Online (Sandbox Code Playgroud)
ZonedDateTime // Represent a moment in the wall-clock time used by the people of a certain region (a time zone).\n.now() // Capture current moment. Better to pass optional argument for `ZoneId` (time zone). Returns a `ZonedDateTime` object.\n.format( // Generate a `String` with text in a custom formatting pattern.\n DateTimeFormatter.ofPattern( "uuuu-MM-dd_HH-mm-ss-SSS" )\n) // Returns a `String` object.\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n2018-08-26_15-43-24-895
\n
Instant您正在使用麻烦的旧遗留日期时间类。而是使用 java.time 类。
\n\n如果您想要 UTC 格式的日期时间,请使用该类Instant。该类具有纳秒级的分辨率,足以满足毫秒级的分辨率。
Instant instant = Instant.now();\nString output = instant.toString();\nRun Code Online (Sandbox Code Playgroud)\n\n该toString方法使用DateTimeFormatter.ISO_INSTANT格式化程序,以小数形式打印 0、3、6 或 9 位数字,根据需要打印适合实际数据值的数量。
在 Java 8 中,当前时刻最多只能捕获毫秒,但 Java 9 中的新实现Clock可能会捕获最多纳秒。因此,如果您有要求,请截断为毫秒。TemporalUnit按照 中的实现,通过 a 指定所需的截断ChronoUnit.MILLIS。
Instant instant = Instant.now().truncatedTo( ChronoUnit.MILLIS );\nRun Code Online (Sandbox Code Playgroud)\n\nZonedDateTime如果您想要指定时区,请应用 aZoneId来获取ZonedDateTime.
Instant instant = Instant.now();\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\ninstant.toString(): 2018-08-26T19:43:24.895621Z
\n
Instant instantTruncated = instant.truncatedTo( ChronoUnit.MILLIS );\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\ninstantTruncated.toString(): 2018-08-26T19:43:24.895Z
\n
ZoneId zoneId = ZoneId.of( "America/Montreal" );\nZonedDateTime zdt = instant.atZone( zoneId );\nString output = zdt.toString();\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n2018-08-26T15:43:24.895621-04:00[美国/蒙特利尔]
\n
同样,如果您需要其他格式,请在 Stack Overflow 中搜索DateTimeFormatter.
DateTimeFormatter如果您想强制使用三位数字表示毫秒,即使该值全为零,也可以使用DateTimeFormatterclass 指定自定义格式模式。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd_HH-mm-ss-SSS" ) ;\nString output = zdt.format( f ) ;\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n2018-08-26_15-43-24-895
\n
java.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat。
Joda -Time项目现在处于维护模式,建议迁移到java.time类。
\n\n要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
\n\n您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获取 java.time 类?
\n\n| 归档时间: |
|
| 查看次数: |
11519 次 |
| 最近记录: |