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