我想将简单时间格式转换为毫秒。我已经说了一段时间 3:14 ,我想把它转换成毫秒。我有以下代码,但它给了我一个负值。
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date d = format.parse("3:14");
long time = time.getTime();
答案 0 :(得分:2)
我的猜测......你忽略了指定一个时区。因此,在将字符串解析为Date实例时,应用了JVM的默认时区。日期有一个日期和时间部分。没有日期部分,该课程假定您的意思是epoch,first 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();