[英]SimpleDateFormat Parse a time string with current date
我收到一个时间字符串,例如14:26:16
,它是指今天。 我的要求是找到当前时间与给定时间之间的时差。
SimpleDateFormat毫无例外地解析字符串,但是没有得到25/10/2015 14:26:16
我得到01/01/1970 14:26:16
。 听起来很简单,但我还没有找到一种简单的方法来解析正确的日期。
我当前的代码:
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date currentTime = new Date(); //25/10/2015
Date arrivalTime = formatter.parse(eta); //01/01/1970
final long difference = arrivalTime.getTime() - currentTime.getTime();
我建议使用LocalTime
东西
LocalTime arrivalTime = LocalTime.parse(eta, DateTimeFormatter.ISO_LOCAL_TIME);
LocalTime currentTime = LocalTime.now();
final long difference = arrivalTime.getLong(ChronoField.MILLI_OF_DAY) - currentTime.getLong(ChronoField.MILLI_OF_DAY);
这适用于Java 7,可与Android一起使用。
/**
* Android utility to get the elapsed milliseconds between a String timestamp (in the future) and the current time
* @param timeStamp Accepts a String in the form of HH:mm:ss
* @return Elapsed time in milliseconds
* @throws ParseException
*/
public static long timeDiff(String timeStamp) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
Date arrivalTime = formatter.parse(timeStamp);
Calendar arrivalCal= Calendar.getInstance();
arrivalCal.set(Calendar.HOUR_OF_DAY, arrivalTime.getHours());
arrivalCal.set(Calendar.MINUTE, arrivalTime.getMinutes());
arrivalCal.set(Calendar.SECOND, arrivalTime.getSeconds());
arrivalCal.set(Calendar.MILLISECOND, 0);
return arrivalCal.getTimeInMillis() - System.currentTimeMillis();
}
为了解决以上有关Joda-time的评论,Joda是一个很棒的Time实用程序库,但是它将为您的项目增加很多开销。 如果您反复需要编写时间转换方法,则可能应该切换到Joda,但仅使用一种方法就不能保证为您的项目增加成本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.