2010-11-25 53 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。我当你希望可以解决您的问题。