I Have Date, that comes to our system in format +0yyyyMMdd
For instance 12 March,2011 is +020110312
For now it's开发者_开发百科 definitely + symbol and one 0 before Date, but in future it may be more than one zeros,e.g. +000020110312
Is it possible to parse it with standard Java java.text.DateFormat.parse(String source)?
Or I should write custom parsing method?
Thank you.
I'd guess the +0 is a timezone indicator, so you can try:
new SimpleDateFormat("ZyyyyddMM")
Alas, this doesn't work immediately.
In order to make it work, get a substring from 0 to length - 8 and expand it to be four digits to meet the RFC for the timezone. See SimpleDateFormat
If the +0 prefix is a constant, then you can just quote it using singlequotes.
String string = "+020110312";
Date date = new SimpleDateFormat("'+0'yyyyMMdd").parse(string);
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011
(outcome is correct as per my timezone)
Note that months are represented by MM not mm. The mm represents minutes. Using mm for months would corrupt the parsing outcome.
See also:
- SimpleDateFormat javadoc
Update: since that seem to vary in the future "but in future it may be more than one zeros", you can better consider to substring the last 8 characters.
String string = "+020110312";
Date date = new SimpleDateFormat("yyyyMMdd").parse(string.substring(string.length() - 8));
System.out.println(date); // Sat Mar 12 00:00:00 GMT-04:00 2011
I would substring the last 8 chars from your representation and then parse it. (I am not sure if you can safely avoid it)
You could parse the date portion using SimpleDateFormat.
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.parse("20110312");
But you would need to strip off the "+000" prefix.
加载中,请稍侯......
精彩评论