2016-03-10 3 views
3

У меня есть: CreatedTime TIMESTAMP, UpdatedTime TIMESTAMP, Статус Varchar, AutoID колонныПреобразование JSON DATETIME в строку в JAVA

в MySQL. Через мой сервис я получил следующий формат json.

{ 
     "CreatedTime": "\/Date(1457646424000)\/", 
     "UpdatedTime": "\/Date(1457647761000)\/", 
     "Status": "Open", 
     "AutoID": 1 
} 

Я пытаюсь преобразовать CreatedTime и UpdatedTime, как показано ниже:

public String ConvertJsonDateTime(String jsondate) 
{ 
    if (jsondate != "" && !jsondate.equals("") && jsondate != null && jsondate != "null") { 
     jsondate = jsondate.replace("/Date(", "").replace(")/", ""); 
     long time = Long.parseLong(jsondate); 
     Date d = new Date(time); 
     return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d).toString(); 
    } else { 
     return ""; 
    } 
} 

Но он возвращает неправильные детали. например, в таблице CreatedTime - 2016-03-10 14:47:04, но функция ConvertJsonDateTime возвращается как 2016-03-11 03:17:04. Как я могу это исправить?

+1

Вероятно, вы должны установить правильный 'TimeZone' для ваш 'SimpleDateFormat' –

+3

' jsondate! = "" '-> никогда не компрометирует строки в Java, используя' == 'или'! = ': http://stackoverflow.com/questions/513832/how-do-i-compare- strings-in-java И поместите 'jsondate! = null' left-most в ваше выражение: если оно равно null,'! jsondate.equals ("") 'будет бросать NPE –

ответ

0

вам необходимо установить правильный часовой пояс

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); // GMT or any timezone 

также, как говорит Барт, вы никогда не сравнивать строки с помощью == или !=, ВСЕГДА используйте equals()

Смежные вопросы