在Android中将日期和时间转换为毫秒

29

我有一个 DatePicker 和一个 TimePicker,分别选择了日期和时间。现在我想将所选的日期和时间转换为毫秒。如何实现?

例如,我选择了2012年2月5日20:43作为日期和时间。

现在,我需要将此日期时间转换为毫秒,类似于:

DateTimeInMilliseconds = 1234567890


你是指自1970年1月1日00:00以来经过的毫秒数吗? - Zoltán
4个回答

51
你可以使用来自你的日期选择器和时间选择器的值创建一个日历对象:
Calendar calendar = Calendar.getInstance();
calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 
             timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0);
long startTime = calendar.getTimeInMillis();

我喜欢你的方法(+1),但个人尽可能避免try-catch块的开销。 "d-M-yyyy"对于双位数日期,如“12-10-2012”有效吗? - Sam
但他只需要毫秒级的时间,没有其他的。因此,存在额外开销,因为首先您获取实际时间,然后重置它,仅在此之后才获取您的毫秒数,而有一个具有getTime()方法的Date对象可以立即返回毫秒数。 - fonZ
@Sam 是的。d 接受 "1-31",dd 接受 "01-31",MMM 同理。 - Cat
@JonathanCruz 是的,那里有一点浪费。但是你从哪里获取你的日期对象呢?出于某种我不知道的原因,没有直接的方法可以从DatePicker中获取日期值。 - Sam
@krunalshah 不要进行这样无用的修改。添加“TimePicker”并没有什么改进答案的作用,那只是增加了与答案本身无关的信息。我已经撤回了你的编辑。 - Xaver Kapeller
@XaverKapeller,没错,但我是针对Android新手的,他们会对TimePicker引用感到困惑,比如它如何在声明代码中出现以及如何初始化,所以我这样做了。 - krunal shah

11
将这两个字符串合并,并使用SimpleDateFormat进行解析。
类似于这样:
String toParse = myDate + " " + myTime; // Results in "2-5-2012 20:43"
SimpleDateFormat formatter = new SimpleDateFormat("d-M-yyyy hh:mm"); // I assume d-M, you may refer to M-d for month-day instead.
Date date = formatter.parse(toParse); // You will need try/catch around this
long millis = date.getTime();

在IDEOne上的示例:http://ideone.com/nOJYQ4


6
您可以使用此代码。
String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date d = f.parse(string_date);
long milliseconds = d.getTime();

4

Date类的getTime()方法返回一个以毫秒为单位的long类型时间。

http://developer.android.com/reference/java/util/Date.html

如果你有一个类似于Date对象的东西:

Date date;

你可以做:

System.out.println(date.getTime());

并且它将以毫秒为单位打印出时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接