KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
In various Android projects, I use the following static function to parse dates such as 1900-12-31 . Of course, this function should be deterministic - but it turns out it is not. Why? Normally, it parses the date 2010-10-30 , for example, to the correct Date instance holding that value. But I have noticed that when I have an IntentService running at the same time and parsing some dates, this function parses the same date as above to 1983-01-20 , which is one of the dates parsed in the IntentService . How can this happen? public static Date dateFromString(String dateStr) { SimpleDateFormat mDateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); SimpleDateFormat mDateTimeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault()); Date dateOut = null; try { if (dateStr != null) { if (dateStr.length() == 7) { if (dateStr.startsWith("--")) { dateStr = "0000"+dateStr.substring(1); } } else if (dateStr.length() == 6) { if (dateStr.startsWith("-")) { dateStr = "0000"+dateStr; } } else if (dateStr.length() == 5) { dateStr = "0000-"+dateStr; } else if (dateStr.matches("[0-9]{2}\\.[0-9]{2}\\.[0-9]{4}")) { dateStr = dateStr.substring(6, 10)+"-"+dateStr.substring(3, 5)+"-"+dateStr.substring(0, 2); } else if (dateStr.matches("[0-9]{2}\\/[0-9]{2}\\/[0-9]{4}")) { dateStr = dateStr.substring(6, 10)+"-"+dateStr.substring(3, 5)+"-"+dateStr.substring(0, 2); } else if (dateStr.matches("[0-9]{8}")) { dateStr = dateStr.substring(0, 4)+"-"+dateStr.substring(4, 6)+"-"+dateStr.substring(6, 8); } if (dateStr.length
Tags (comma-separated)
Save Edits
Cancel