2010-11-25 55 views
0

獲取毫秒我有字符串格式的日期爲25 November 2010,我試圖獲取該日期的毫秒,對於我做了下面的代碼:問題而從日期

strDateSelcted = "25 November 2010" // Actually i am receiving date in this format 
SimpleDateFormat curFormater = new SimpleDateFormat("dd MMM yyyy"); 
try { 
    Date dateObj = curFormater.parse(strDateSelcted); 

     insertEventtoCalendar(dateObj.getTime()); // Actually insert an event onto the native calendar 

    } catch (ParseException e) { 
    // TODO Auto-generated catch block 
     e.printStackTrace(); 
} 

但是,當我嘗試運行應用程序時,它會在插入日期的前一天創建一個事件,即對於2010年11月25日插入事件2010年11月24日和2010年11月27日插入事件2010年11月26日,並且相同。

所以,我犯了一個錯誤?請告訴我做的方式

+0

我沒有得到你,你試圖從`2010年11月25日`獲取millis? – 2010-11-25 10:07:32

+0

我不確定這是否對你有用,但我認爲在SimpleDateFormat中,MMM給出了這樣的月份:11月份和11月份沒有... – Sephy 2010-11-25 10:11:44

+0

@ org.life.java你得到了,我想得到毫秒特殊日期(這裏,我有一個日期在字符串變量) – 2010-11-25 10:24:29

回答

2

要設置日期格式化程序使用的時區:請調用setTimeZone方法

curFormater.setTimeZone(TimeZone.getTimeZone("UTC")); 
0

這幾乎肯定是一個時區問題。檢查您的SimpleDateFormat正在使用哪個時區,以及您的手機用於顯示事件的時區。

出於診斷目的,我建議你記錄dateObj.getTime()的結果,你可以檢查究竟是這是什麼意思,在臺式機上。

1

首先,你的日期模式是錯誤的,使用dd MMMM yyyyMMM解析&返回Nov(不是November)。

另外,由於日期字符串中沒有提供毫秒,所以毫秒將被設置爲 0

看到Jon Skeet更新了我的問題,這可能是時區問題(如他所提到的)。很抱歉對於這個誤會。

測試代碼:

/** 
* 
*/ 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

/** 
* @author The Elite Gentleman 
* 
*/ 
public class Test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     try { 
      String date = "25 November 2010"; 
      SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); 
      Date d = sdf.parse(date); 
      System.out.println(d.getTime()); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

值:1290636000000

0

使用Locale.getDefault()使用SimpleDateFormat。我當你希望可以解決您的問題。