【问题标题】:Difference between two times stored as Strings [duplicate]存储为字符串的两次之间的差异[重复]
【发布时间】:2020-08-18 11:02:27
【问题描述】:

我有两个格式为“dd-MM-YYYY HH:mm:ss”的字符串。如何找到两个字符串之间的小时差?

【问题讨论】:

标签: java android date datetime duration


【解决方案1】:

您可以将String 转换为Date 对象,然后您可以比较它们。 类似下面的东西

 SimpleDateFormat sdformat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
  Date d1 = sdformat.parse("04-05-2020 02:33:12");
  Date d2 = sdformat.parse("05-05-2020 02:33:12");
  System.out.println("The date 1 is: " + sdformat.format(d1));
  System.out.println("The date 2 is: " + sdformat.format(d2));
  if(d1.compareTo(d2) > 0) {
     System.out.println("Date 1 occurs after Date 2");
  } else if(d1.compareTo(d2) < 0) {
     System.out.println("Date 1 occurs before Date 2");
  } else if(d1.compareTo(d2) == 0) {
     System.out.println("Both dates are equal");
  }

【讨论】:

  • 考虑扔掉早已过时且臭名昭著的麻烦SimpleDateFormat和朋友。看看您是否可以使用desugaring 或将ThreeTenABP 添加到您的Android 项目中,以便使用现代Java 日期和时间API 的java.time。使用起来感觉好多了。
  • 感谢@OleV.V。对于这个建议,是的,我想现在我们应该转到 java 8 日期和时间。 api 将从现在开始使用。
【解决方案2】:

您可以使用SimpleDateFormatDate

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 


public static long date_hour_diff(String start_date, String end_date) { 
  SimpleDateFormat simple_date_format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
  try {  
    Date parsed_start_date = simple_date_format.parse(start_date); 
    Date parsed_end_date = simple_date_format.parse(end_date); 
  
    long time_diff = d2.getTime() - d1.getTime(); 
    long diff_hours = (time_diff / (1000 * 60 * 60)) % 24; 
    return diff_hours;
  } catch (ParseException e) { 
      Log.e(TAG, "Date is not valid.");
  } 
}

【讨论】:

  • 考虑扔掉早已过时且臭名昭著的麻烦SimpleDateFormat和朋友。看看您是否可以使用desugaring 或将ThreeTenABP 添加到您的Android 项目中,以便使用现代Java 日期和时间API 的java.time。使用起来感觉好多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
相关资源
最近更新 更多