如何将字符串(hh:mm)转换为当前日期的日期格式

3

我希望能够计算当前时间与字符串中的时间之间的差值(以分钟为单位)。

我有一个来自 SQLite 数据库的字符串,格式如下:

 String time1= "22:50";

我将当前日期获取为:

  Date currentDate = new Date()
   long test = currentData.getTime();

将字符串解析为日期:
 SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "yyyy-MM-dd HH:mm:ss");
oldDate = dateFormat.parse(time1);

然后区别:

  diff = test - oldDate.getTime();
  long seconds = diff / 1000;
  long minutes = seconds / 60;

但是主要问题是由于缺乏当前数据信息(我只有时间)引起的。 我希望能够获得:从字符串中获取当前数据和时间,然后与当前日期和时间进行比较。


1
基本上,你需要从数据库中获取时间,并将其构造成格式为"yyyy-MM-dd "+time1+":ss"的字符串,然后将其解析为SimpleDateFormat。然后,你可以将其与当前的日期/时间进行比较。 - WOUNDEDStevenJones
1个回答

5
使用Java 8时间,将时间解析为LocalTime,将其应用于今天的LocalDate,然后按所需格式进行格式化。
简而言之:
// returns "2017-11-09 22:50:00"
LocalDate.now().atTime(LocalTime.parse("22:50"))
         .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))

如果您的Android系统还没有安装Java 8,请使用ThreeTen Android Backport

我尝试过了,但在OnCreate中插入gradle和AndroidThreeTen.init(this);后,仍然出现:调用需要API级别26。 - bc291
使用 LocalTime.now(desiredZoneId) 然后 ChronoUnit.MINUTES.between(timeFromDb, timeNow) 是否更简单呢?当然,这取决于确切的要求。 - Ole V.V.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接