【发布时间】:2016-05-08 20:20:36
【问题描述】:
我在 Eclipse 中工作。 我有字符串 date = "12-DEC-2016"
现在我想将其转换为相同格式的实用日期。请帮我解决这个问题。
【问题讨论】:
-
像其他涉及
String到Date转换的答案一样,您从SimpleDateFormat开始
标签: java swing datepicker
我在 Eclipse 中工作。 我有字符串 date = "12-DEC-2016"
现在我想将其转换为相同格式的实用日期。请帮我解决这个问题。
【问题讨论】:
String 到Date 转换的答案一样,您从SimpleDateFormat 开始
标签: java swing datepicker
要将String 转换为特定格式的java.util.Date,您可以使用java.text.DateFormat。 DateFormat 对象可以执行双向转换,通过调用format() 从String 到Date 以及通过调用parse() 从Date 到String。 DateFormat对象可以通过多种方式获取,这里有一些:
DateFormat 中的static get*Instance() 方法之一获取实例。当您希望格式位于用户的区域设置中时,这尤其有用。例如,DateFormat.getDateInstance(DateFormat.SHORT)。SimpleDateFormat 的实例来创建您自己的特定格式。例如,new SimpleDateFormat("dd-MMM-yyyy")
您应该考虑是否需要特定的固定格式,或者是否需要用户语言环境使用的任何格式。请记住,不同的国家/地区使用不同的格式。
如果格式不是针对用户,而是针对机器对机器的数据交换,您应该考虑使用 ISO 8601 或 RFC 1123 作为格式。 p>
还可以考虑使用java.time 包而不是java.util.Date。如果您需要执行计算,java.time 包功能更强大。它通常会导致代码更容易理解和更精确,尤其是在处理时区、夏令时、本地时间与 UTC 等方面。
DateFormathttps://docs.oracle.com/javase/8/docs/api/java/text/DateFormat.html
SimpleDateFormathttps://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
java.time 包 https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
【讨论】:
accepted Answer by Hujer 是正确的,但侧重于麻烦的过时类 java.data.Date/.Calendar 和 SimpleDateFormat。正如建议的那样,您应该使用 Java 8 及更高版本中内置的 java.time 框架。
LocalDate新类包括 LocalDate 来表示仅日期值,没有时间或时区。
当您的字符串包含要翻译的单词、日期或月份的名称时,解析需要Locale。明确指定比依赖 JVM 当前的默认语言环境更好。
String input = "12-DEC-2016";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "d-MM-uuuu" );
f = f.withLocale( Locale.ENGLISH );
LocalDate ld = LocalDate.parse( input , f );
【讨论】: