将时间格式转换为毫秒Android

时间:2014-04-22 22:52:36

标签: android time simpledateformat

我想将简单时间格式转换为毫秒。我已经说了一段时间 3:14 ,我想把它转换成毫秒。我有以下代码,但它给了我一个负值。

SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date d = format.parse("3:14");
long time = time.getTime();

2 个答案:

答案 0 :(得分:2)

解释

我的猜测......你忽略了指定一个时区。因此,在将字符串解析为Date实例时,应用了JVM的默认时区。日期有一个日期和时间部分。没有日期部分,该课程假定您的意思是epochfirst moment of 1970 UTC。我打赌你的默认时区落后于UTC超过3个小时。因此,当调整到您的时区时,结果是1969年的日期时间。这样的日期时间(发生在纪元之前)用负数表示。

经验教训

(A)Specify a time zone而不是依赖隐式默认值。

(B)避免使用臭名昭着的java.util.Date和.Calendar类。使用Joda-Time库。

(C)如果您只想使用时间,没有日期,请使用Joda-Time LocalTime类。

答案 1 :(得分:0)

要获得自1970-01-01以来的毫秒数,直到当前日期,请使用

System.currentTimeMillis();

如果你想获得自午夜以来经过的毫秒数,那么你必须获得午夜的时间并将其减去当前时间。这是完整的例子。

// current time
Calendar today = Calendar.getInstance();

// Set the hour to midnight up to the millisecond
today.set(Calendar.HOUR_OF_DAY,0);
today.set(Calendar.MINUTE,0);
today.set(Calendar.SECOND,0);
today.set(Calendar.MILLISECOND,0);

// compute currenttime - midnight to obtain the milliseconds of today
long milliseconds = System.currentTimeMillis()-today.getTimeInMillis();