我有一个这种格式的字符串变量"HH:mm"
。假设变量值为 05:30。
我如何能够从字符串中获取这些数字并计算:
(05 * 60 * 60 * 1000) + (30 * 60 * 1000) 并将该数字(毫秒)放入一个新的 long 变量中。
基本上我需要将字符串时间变量转换为毫秒长变量。
我有一个这种格式的字符串变量"HH:mm"
。假设变量值为 05:30。
我如何能够从字符串中获取这些数字并计算:
(05 * 60 * 60 * 1000) + (30 * 60 * 1000) 并将该数字(毫秒)放入一个新的 long 变量中。
基本上我需要将字符串时间变量转换为毫秒长变量。
让我们s
包含感兴趣的字符串。然后例如你可以说
String s = "5:30";
Pattern p = Pattern.compile("(\\d+):(\\d+)");
Matcher m = p.matcher(s);
if (m.matches()) {
int hrs = Integer.parseInt(m.group(1));
int min = Integer.parseInt(m.group(2));
long ms = (long) hrs * 60 * 60 * 1000 + min * 60 * 1000;
System.out.println("hrs="+hrs+" min="+min+" ms="+ms);
} else {
throw Exception("Bad time format");
}
对于它的价值,一天只有 86,400,000 毫秒,所以你不需要long
. 一个int
足够大。
你可以使用SimpleDateFormat
类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String inputString = yourTime + ":00.000"; //Added to string to make HH:mm:ss.SSS format
Date date = sdf.parse("1970-01-01 " + inputString);
System.out.println("in milliseconds: " + date.getTime());
public static void main(String[] args) throws IOException {
SimpleDateFormat simpleDateFormate = new SimpleDateFormat("HH:mm");
simpleDateFormate.setTimeZone(TimeZone.getTimeZone("UTC"));
String inputString = "05:30";
Date date = null;
try {
date = simpleDateFormate.parse( inputString);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("in millSeconds: " + date.getTime());
long yourvar=date.getTime();
}