Java 系统日期格式
是否有任何方法可以强制计算机使用java代码更改其日期格式?我的应用程序使用指定格式以字符串形式将日期存储在磁盘上的文件中。选择的格式仅影响字符串变量,而不影响文件,因为它必须使用系统区域设置。我试图在SimpleDataFormat()中设置区域设置或更改默认区域设置,但没有成功。我不明白为什么系统设置强制字符串遵循日期模式。如有任何澄清,将不胜感激 你的问题一点也不清楚。没有“系统日期格式”之类的东西 避免遗留日期时间类 与最早版本的Java捆绑在一起的旧日期时间类已经被证明是麻烦、混乱和有缺陷的。避免使用Java 系统日期格式,java,file,date-format,Java,File,Date Format,是否有任何方法可以强制计算机使用java代码更改其日期格式?我的应用程序使用指定格式以字符串形式将日期存储在磁盘上的文件中。选择的格式仅影响字符串变量,而不影响文件,因为它必须使用系统区域设置。我试图在SimpleDataFormat()中设置区域设置或更改默认区域设置,但没有成功。我不明白为什么系统设置强制字符串遵循日期模式。如有任何澄清,将不胜感激 你的问题一点也不清楚。没有“系统日期格式”之类的东西 避免遗留日期时间类 与最早版本的Java捆绑在一起的旧日期时间类已经被证明是麻烦、混乱和有
java.util.Date
、日历
和SimpleDataFormat
。它们现在是遗留的,被java.time类取代
ISO 8601
如果要将日期时间值序列化为文本,请使用标准格式。这些格式在不同文化中都是直观的、明确的,并且越来越流行,包括在新的互联网和信息标准中
在解析/生成日期时间值字符串时,这些类默认使用ISO 8601格式
使用类以UTC为单位获取分辨率高达纳秒的当前时刻
生成一个字符串,将该时刻表示为标准ISO 8601格式的文本
String output = instant.toString();
2016-12-04T06:12:13.455Z
很容易再次解析回一个对象
Instant instant = Instant.parse( "2016-12-04T06:12:13.455Z" );
通常最好在UTC工作,但如果需要,您可以将该时刻调整为时区
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
String outputZdt = zdt.toString();
2016-12-04T01:12:13.455-05:00[美国/蒙特利尔]
看
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到java.time 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门针对Android采用了Three Ten Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是将来可能添加到java.time的一个试验场。向我们展示您的代码。但在此之前,你看,这个问题毫无意义。提供更多详细信息和示例代码。如果您正在将日期时间值作为文本写入文件,那么在从应用程序提取的代码片段中应该很容易演示。欢迎使用Stack Overflow!请阅读我们的文章,帮助您提出一个好问题,从而得到一个好答案。非常感谢巴兹尔的帮助。你说得很清楚,我需要更多的阅读和练习。我指的是“控制面板->区域”中的“系统日期格式”设置,用户在该区域设置操作系统的日期和时间格式。这种格式似乎覆盖了JVM环境之外的所有内容,比如我在系统上设置的文件。很抱歉,我没有提前回复,因为我没有收到你评论的电子邮件通知。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
String outputZdt = zdt.toString();