计算两个不同格式日期之间的时间差
Posted
技术标签:
【中文标题】计算两个不同格式日期之间的时间差【英文标题】:Calculating time difference between two differently formated dates 【发布时间】:2016-11-01 14:53:19 【问题描述】:我知道关于这个问题有数百万个类似的问题,但我很难找到正确的答案,所以如果有人能给我直接的答案,我将不胜感激。
我有一些来自后端的字符串日期,格式如下:
String days = "2016-12-01T15:43:42.2737987+01:00";
我的简单日期格式化程序如下所示:
private DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.getDefault());
我正在尝试以这种方式获取今天的日期:
String currentDateandTime = sdf.format(new Date());
我计算天数差异的方法如下:
public void daysBetween(String date1, String date2)
Date mDate1;
Date mDate2;
try
mDate1 = sdf.parse(date1);
mDate2 = sdf.parse(date2);
dateDiff = (mDate1.getTime() - mDate2.getTime()) / (24 * 60 * 60 * 1000);
days = String.valueOf(dateDiff);
catch (Exception e)
e.printStackTrace();
所以这里的问题是,我无法解析“天”字符串,因为有时我会得到 7 位数字,有时是 2 秒,等等...有没有办法调整这两个日期来获取天数区别?
【问题讨论】:
使用 "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'" 作为日期格式,这应该添加 7 个毫秒字段。如果这不起作用,请使用 2 个不同的格式器,一个用于 2 位,一个用于 7 位 如果你不介意导入库,joda有很好的时差函数。 有 7 个字段或任何数字的东西,我不知道我会得到多少个......我正在做的这个项目已经很大了,所以添加更多库是如果没有必要,这不是一个真正的选择:) ...有没有办法以某种方式排除秒数和这个 +01:00 ? 如果您有不同的时区,放弃最后一个 +01:00 将会中断。但是你可以使用 date.substring(0,18);还要从您的 simpleDateFormat 中删除“Z” @X3Btel 这解决了问题!!导入库更容易:) tnx! 【参考方案1】:String formatedDays = days.substring(0,18)+ days.substring(days.lastIndexOf("+"));
这将使您的日期字符串仅包含秒数,并且其中包含时区
【讨论】:
以上是关于计算两个不同格式日期之间的时间差的主要内容,如果未能解决你的问题,请参考以下文章
如何用jquery判断两个日期之间的时间差小于一年,日期格式为20121212?
(Java / Android) 计算两个日期之间的天数并以特定格式呈现结果