2016-11-22 278 views
0

我試圖將此時間戳值轉換爲日期,但它給了我錯誤的時間。日期是正確的時間戳錯誤轉換迄今爲止android

TimeStamp : 1423821615 
True Value : Fri, 13 Feb 2015 10:00:15 GMT 
Android Code shows : Fri, 13 Feb 2015 15:30:15 IST 

這是我用來將時間戳轉換爲日期的代碼。

Date dt = new Date((long)timestampInSeconds * 1000); 

我想這個代碼太多,但結果相同

public static Date getDateFromTimeStamp(long timestampInMilliseconds) { 
    Calendar cal = Calendar.getInstance(); 
    cal.setTimeInMillis(timestampInMilliseconds); 
    return cal.getTime(); 
} 

Date dt = getDateFromTimeStamp((long)timestampInSeconds * 1000); 

我不知道我做錯了。請幫助


現在我解釋整個場景。我的客戶來自英國,我來自印度(提前5點30分)。他在英國創造了早上10點的約會。但是現在我在我的本地PC上安裝了他的數據庫。我的.NET軟件顯示在SQL服務器的下圖中。但在移動領域,它並沒有。 PC和手機都在同一時區。

enter image description here

我使用此代碼轉換日期時間戳記,並通過Web服務

SELECT DATEDIFF(SECOND,{d '1970-01-01'}, Appointments.DateTime) AS AppointmentTimeStamp FROM Appointments 

發送此時間印記到了移動應用是我的.NET軟件顯示的圖像
enter image description here

記錄是否在數據庫位於英國時區時創建。或者我仍然在某個地方犯錯。

+0

檢查你的價值,因爲你有30分鐘不同的是,這不是一個時區問題。 – AxelH

+0

它不是30分鐘的差異。它的5小時30分 – Krishna

+3

@AxelH [O'RLY](https://www.timeanddate.com/time/time-zones-interesting.html) – Selvin

回答

0

我不明白你想要得到什麼。 如果您將時間設爲EPOCH時間,則您沒有關於製作此時間戳的時區的信息。所以,你應該知道時區偏移,並且從這個時間戳中減去這個秒。

但我認爲最好的方式來使用ISO 8178的時間戳8601格式,可以很容易地轉換爲任何時區,你需要什麼

例如,該代碼轉換成ISO數據爲本地時間或返回當前時間取決於區域設置時區

private long time2LocalTimeZone (String date){ 

     //"2016-07-29T23:07:45.120+00" 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.getDefault()); 

     try { 

      return sdf.parse(date).getTime(); 

     } catch (ParseException e){ 

      return (new Date()).getTime(); 

     } 
    } 

這個代碼算你從GMT時區偏移,並轉換爲劃時代的時間取決於區域設置時區

private long time2LocalTimeZone (long date){ 
     TimeZone tz = TimeZone.getDefault(); 
     Date now = new Date(); 
     int offsetFromUtc = tz.getOffset(now.getTime())/1000; 
     return date + offsetFromUtc; 
    } 
+0

我需要顯示與SQL服務器中存儲的時間相同的日期。您可以在第一張圖片中看到。我想將時間戳轉換爲日期而不是日期到時間戳。 – Krishna

+0

現在我只有一種方法來顯示我需要的是通過web服務以字符串格式發送日期 – Krishna

+0

好的,ISO字符串像這樣yyyy-MM-dd'T'HH:mm:ss.SSSZ包含所有必要的信息數據庫可以給你ISO格式的日期。或者如果你的數據庫中的所有行都帶有GMT時區時間戳,你應該從此時減去330秒bucause android認爲它是區域設置時區的Epoch時間 – koa73