Android Date worng转换日期为millis

时间:2015-06-19 09:00:59

标签: android date milliseconds

我遇到了这样的问题。我保存了Date (yyyy,mm,dd)。从这个日期起,我需要获得millisec表示,但是当我致电getTime()时,它给了我错误的时间。这个问题在哪里?

Example :        
Date testDate= new Date (2015,5,11);

当我尝试将此日期称为millisec时,testDate.getTime()

result=61392117600000, but it must be result=1433970000000

注意:5表示Jun,因为它从0开始计算

2 个答案:

答案 0 :(得分:1)

因为在包java.util;下的日期类中,日期方法将1900的年份添加为

/**
 * Constructs a new {@code Date} initialized to midnight in the default {@code TimeZone} on
 * the specified date.
 *
 * @param year
 *            the year, 0 is 1900.
 * @param month
 *            the month, 0 - 11.
 * @param day
 *            the day of the month, 1 - 31.
 *
 * @deprecated Use {@link GregorianCalendar#GregorianCalendar(int, int, int)} instead.
 */
@Deprecated
public Date(int year, int month, int day) {
    GregorianCalendar cal = new GregorianCalendar(false);
    cal.set(1900 + year, month, day);
    milliseconds = cal.getTimeInMillis();
}

所以你需要改变

Date testDate= new Date (2015,5,11);

Date testDate= new Date (115,5,11);

推荐的方法是使用下面给出的SimpleDateFormat

Android convert date and time to milliseconds

答案 1 :(得分:0)

  年 - 减去1900年;必须是0到8099.(注意8099是9999减去1900。)

来自JavaDoc(http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html

因此,与2015年相比,您将使用2015 - 1900 = 115作为年份参数