在Android中将日期和时间转换为毫秒
Posted
技术标签:
【中文标题】在Android中将日期和时间转换为毫秒【英文标题】:Convert date and time to milliseconds in Android 【发布时间】:2012-10-24 18:19:03 【问题描述】:我有来自 DatePicker
和 TimePicker
的 日期 和 时间。现在我想将选定的日期和时间更改为 毫秒。我该怎么做???
例如,我选择了 日期 2-5-2012
并且 时间 是 20:43
现在我必须将此日期时间转换为 毫秒 类似于
DateTimeInMilliseconds = 1234567890
【问题讨论】:
您的意思是从 1970 年 1 月 1 日 00:00 开始经过的毫秒数? 【参考方案1】:您可以使用 DatePicker 和 TimePicker 中的值创建一个 Calendar 对象:
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”?
但他只需要以毫秒为单位的时间,仅此而已。所以会有开销,因为首先你得到实际时间,然后你重置它,然后你才得到你的毫秒数,而有一个 Date 对象具有立即返回毫秒数的 getTime() 方法。
@Sam 是的。 d
接受“1-31”,dd
接受“01-31”,同样适用于M
和MM
。
@JonathanCruz 是的,那里有点浪费。但是你从哪里得到你的 Date 对象呢?由于我不知道的原因,没有直接的方法可以从 DatePicker 获取 Date 值。
@krunalshah 不要进行这种无用的编辑。添加TimePicker
并不会改善答案,只会添加与答案本身无关的信息。我已经回滚了你的编辑。【参考方案2】:
将两个字符串合并在一起,并使用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
【讨论】:
【参考方案3】:您可以使用此代码
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());
它会以毫秒为单位打印出时间。
【讨论】:
以上是关于在Android中将日期和时间转换为毫秒的主要内容,如果未能解决你的问题,请参考以下文章