How to present a date that can be parsed by any DateTimeFormatter pattern in Java?

扶醉桌前 提交于 2019-12-11 14:54:34

问题


I'm working with a software that uses a lot of DateTimeFormat parsing, in order to minimize the errors, I wonder if I can present the date String in a certain way that it can be parsed by any DateTimeFormat pattern. Ideally it should work as follows:

String date = "...."
DateTimeFormatter format = DateTimeFormat.forPattern(any pattern I want);
DateTime result = format.parseDateTime(date);

Or does the date have to follow the pattern? Thanks for your help


回答1:


No, you can not get one size fits all. Think if your string is not a legal date at all, something like "hello", how are you going to parse it?

java.time

Java 8 and later includes the java.time framework (Tutorial). The java.time formatter’s pattern may contain []to mark optional parts. This gives you some flexibility. Say you use format:

M[M]['/']['-']['.']d[d]['/']['-']['.']yyyy[' ']['T'][' ']h[h]:mm:ss

So in this case your string may have one or two digits specifying month, day and hour. Month, day and year may be separated by ., - or / and so forth. For example with format above the following strings will be parsed successfully:

1/10/1995 9:34:45
01-10-1995 09:34:45
01.10.1995T09:34:45

…and so forth.

I wrote a utility that has a set of patterns. Once it gets a String it tries to parse it with all the patterns in the set and sees if it succeeds with one of them. If you write such a set of patterns correctly you may ensure that your util supports any possible String that denotes a valid date.




回答2:


SimpleDateFromat let you set your own date patters. for example dd/mm/yyyy, mm/dd/yyyy, yyyy-mm-dd etc.. This link can give you a better understanding about date patterns and how to use it




回答3:


use SimpleDateFormat

SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
Date d=sdf.parse("07/12/2014");


来源:https://stackoverflow.com/questions/27431845/how-to-present-a-date-that-can-be-parsed-by-any-datetimeformatter-pattern-in-jav

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!