2014-10-03 45 views
0

我想在日程時間用作MapReduce減少方連接程序中的鍵。表A的值爲2013-01-01 15:11:48,表B的值爲1-1-2013 15:11 GMT爲兩個相等的日期時間獲取長整型值會得到不同的值

我解析爲:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2013-01-01 15:11:48 
Calendar cal = Calendar.getInstance(); 
cal.setTime(df.parse(split[TaxiFields.PICKUP_DATETIME])); 
cal.set(Calendar.SECOND, 0); //disconsidering the seconds 
pickupDatetime.set(cal.getTime().getTime()); 

我解析B中:

DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm zzz"); //1-1-2013 15:11 GMT, 
Calendar cal = Calendar.getInstance(); 
cal.setTime(df.parse(split[0])); 
cal.set(Calendar.SECOND, 0); 
rainDate.set(cal.getTime().getTime()); 

但是第一給了我1357063860000的結果,而第二個給我1357053060000

我失蹤了什麼?我嘗試將時區設置爲默認(cal.setTimeZone(TimeZone.getDefault());),但它不起作用。

感謝

+0

也許'setTimeZone'通過轉換日期時間來改變時間,而不是簡單地將它設置爲未知時區?你有沒有嘗試過'Calendar.getInstance(TimeZone.getTimeZone(「GMT」));'第一個例子? – Davio 2014-10-03 12:04:56

+0

現在嘗試,仍然返回相同的值(1357053060000)... – 2014-10-03 12:13:03

+1

不知道它有幫助,但兩個長值之間的差異對應於三個小時的差異。 – Tenner 2014-10-03 12:17:57

回答

2

您沒有使用兩個等於日期倍。您有:

  1. 在你的本地時區2013-01-01 15:11:48(這大概不是GMT)
  2. 1-1-2013 15:11 GMT這是在GMT時區

所以這兩個日期由你之間的小時數不同時區和GMT。

可以解析的第一次約會,就好像是在GMT時區:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 2013-01-01 15:11:48 
df.setTimeZone(TimeZone.getTimeZone("GMT")); 

如果你這樣做,你會得到相同的值兩個日期時間(1357053060000

+0

非常感謝,這解決了我的問題! – 2014-10-03 12:28:11

相關問題