簡體   English   中英

在兩個相等的日期時間獲得長值會產生不同的值

[英]Getting long value for two equal date times yields different values

我想使用日期時間作為MapReduce減少端連接程序中的鍵。 表A的值為2013-01-01 15:11:48 ,表B的值為1-1-2013 15:11 GMT

我將A解析為:

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()); ),但是它沒有用。

謝謝

您沒有使用兩個相等的日期時間。 你有:

  1. 2013-01-01 15:11:48在您當地的時區(可能不是格林尼治標准時間)
  2. 1-1-2013 15:11 GMT (格林尼治標准時間)

因此,這兩個日期的時區與格林尼治標准時間之間的小時數有所不同。

您可以將第一個日期解析為GMT時區:

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

如果這樣做,則兩個日期時間都將獲得相同的值( 1357053060000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM