我需要比较两个Dates(例如date1和date2),然后得出一个在同一天boolean sameDay的两个Dates共享的情况,如果它们不是,则为假.
我怎样才能做到这一点?这里似乎有一种混乱的旋风......如果可能的话,我想避免在JDK之外引入其他依赖.
澄清:如果date1和date2分享同一年,一个月和一天,那么sameDay是真的,否则就是假的.我知道这需要一个时区的了解......这将是很好的时区通过,但我只要能与任何GMT或本地时间住,因为我知道这个行为是什么.
再次,澄清一下:
date1 = 2008 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
=> sameDate = true
date1 = 2009 Jun 03 12:56:03
date2 = 2008 Jun 03 12:59:44
=> sameDate = false
date1 = 2008 Aug 03 12:00:00
date2 = 2008 Jun 03 12:00:00
=> sameDate = false
Run Code Online (Sandbox Code Playgroud) 我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我想比较两个日期,但是我遇到了麻烦.1日期是从java.util.date对象创建的,另一个是手动制作的.以下代码是一个示例:
Date ds = new Date();
DateTime d = new DateTime(ds);
DateTime e = new DateTime(2012,12,07, 0, 0);
System.out.println(d.isEqual(e));
Run Code Online (Sandbox Code Playgroud)
然而,测试结果证明了false.我猜这是因为时间.如何检查这两个日期是否相等(我的意思是年,月,日相同)?
我有两个约会:
toDate(用户输入MM/dd/yyyy格式)currentDate(获得new Date())我需要比较currentDate用toDate.我只有在toDate等于或大于时才显示报告currentDate.我怎样才能做到这一点?
给定两个Date对象,比较它们的时间部分之间的差异,完全忽略年,月和日,有什么好方法?
这与这个问题完全相反.
更新:这是未来参考的最终代码:
private long differenceBetween(Date currentTime, Date timeToRun)
{
Calendar currentCal = Calendar.getInstance();
currentCal.setTime(currentTime);
Calendar runCal = Calendar.getInstance();
runCal.setTime(timeToRun);
runCal.set(Calendar.DAY_OF_MONTH, currentCal.get(Calendar.DAY_OF_MONTH));
runCal.set(Calendar.MONTH, currentCal.get(Calendar.MONTH));
runCal.set(Calendar.YEAR, currentCal.get(Calendar.YEAR));
return currentCal.getTimeInMillis() - runCal.getTimeInMillis();
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在没有时间部分的情况下比较两个日期?
如何在java中没有时间比较日期?
Date currentDate = new Date();// get current date
Date eventDate = tempAppointments.get(i).mStartDate;
int dateMargin = currentDate.compareTo(eventDate);
Run Code Online (Sandbox Code Playgroud)
此代码比较时间和日期!
您好我试图将用户输入的日期(作为字符串)与当前日期进行比较,以便确定日期是更早还是更早.
我目前的代码是
String date;
Date newDate;
Date todayDate, myDate;
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy");
while(true)
{
Scanner s = new Scanner (System.in);
date = s.nextLine();
Calendar cal = Calendar.getInstance();
try {
// trying to parse current date here
// newDate = dateFormatter.parse(cal.getTime().toString()); //throws exception
// trying to parse inputted date here
myDate = dateFormatter.parse(date); //no exception
} catch (ParseException e) {
e.printStackTrace(System.out);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图将用户输入日期和当前日期都放入两个Date对象,以便我可以使用Date.compareTo()来简化比较日期.
我能够将用户输入字符串解析为Date对象.但是,当前日期cal.getTime().toString()由于是无效字符串而不会解析为Date对象.
怎么去做这个?提前致谢
我想在昨天和今天之间做一个简单的日期比较
if (yesterday.before(today)) {
...
}
Run Code Online (Sandbox Code Playgroud)
问题是,使用before方法,即使只有几秒钟的差异,我也会评估为真.我怎么可以只比较一天(因为我只想将它评估为真如果它是前一天(应该忽略分钟/秒)
先感谢您
我有一个调度程序,需要检查传入的时间戳是否是当天的时间戳.
传入时间戳的格式为Eg:1384956395.
如何在java中检查这个?请帮忙.我不是在使用Joda
在我的 android 应用程序中有一个用户定义的日期。此日期应大于或等于系统日期。如果是,则过程将继续。如果不是,那么它会提示后续日期应该大于或等于系统日期。
我使用了这个代码段。
if (sys_date.after(df.parse((date.getText().toString())))) {
Toast.makeText(getActivity(), "Follow up date should be greater than or equal to system date", Toast.LENGTH_SHORT).show();
} else {
//process will continue
}
Run Code Online (Sandbox Code Playgroud)
但问题是:即使用户定义的日期等于系统日期,它也会给出吐司消息。
任何人都可以如此友好地解释这里发生了什么以及我如何解决这个问题。
提前谢谢