Java Android:比较日历日期
在我的应用程序中,我上次更新服务器上的一些数据时正在保存。 因此,我使用:Java Android:比较日历日期,java,android,date,Java,Android,Date,在我的应用程序中,我上次更新服务器上的一些数据时正在保存。 因此,我使用: long time = Calendar.getInstance().getTimeInMillis(); 现在我希望数据每年更新两次,分别为03.03和08.08。 如何检查自上次更新以来,这两个约会寄宿生中是否有一个是交叉的?将其更改为以毫秒为单位的时间,并进行比较: Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH, Calendar.M
long time = Calendar.getInstance().getTimeInMillis();
现在我希望数据每年更新两次,分别为03.03和08.08。
如何检查自上次更新以来,这两个约会寄宿生中是否有一个是交叉的?将其更改为以毫秒为单位的时间,并进行比较:
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH, Calendar.MARCH);
c.set(Calendar.DAY_OF_MONTH, 3);
long time2= c.getTimeInMillis();
c.set(Calendar.MONTH, Calendar.AUGUST);
c.set(Calendar.DAY_OF_MONTH, 8);
long time3= c.getTimeInMillis();
if(time>time2){
//Logic
if(time>time3){
//Logic
}
}
有一件非常重要的事情我花了一段时间才弄明白,这对那里的人们非常有帮助,如果您正在寻找以下任何问题的答案,这是给您的: 为什么我的日期显示不正确? 为什么即使我手动设置时间,它也显示不正确? 为什么月份和年份比我设定的日期少一天 出于某种原因,Java像数组一样对月份值进行排序,我的意思是,对于Java,一月是0,十二月是11。这一年也是如此,如果您将12月设置为12月,将年份设置为2012年,然后尝试对月份和年份执行“system.out.println”,它会将我的月份显示为1月,将年份显示为2013年 那你该怎么办
Calendar cal = new GregorianCalendar();
cal.set(2012, 11, 26); // the date I want to input is 26/12/2012 (for Java, 11 is December!)
现在,什么是正确的方式来获取日期,以便在屏幕上看到它
如果您尝试“system.out.println of your calendar.DATE、your calendar.MONTH和your calendar.YEAR”,则不会显示正确的日期
如果要显示日期,需要执行以下操作:
System.out.println (calact.get (calact.DATE));
// displays day
System.out.println (calact.get (calact.MONTH)+1);
//add 1 remember it saves values from 0-11
System.out.println (calact.get (calact.YEAR));
// displays year
现在,如果您正在处理表示日期的字符串,或者。。。。
如果您需要比较范围之间的日期,假设您需要知道日期“A”是否将在未来10天内发生……这……是……给……您的
在我的例子中,我使用的字符串格式为“15/07/2012”,我需要知道该日期是否会在未来10天内发生,因此我必须执行以下操作:
System.out.println (calact.get (calact.DATE));
// displays day
System.out.println (calact.get (calact.MONTH)+1);
//add 1 remember it saves values from 0-11
System.out.println (calact.get (calact.YEAR));
// displays year
1获取字符串日期并将其转换为日历(此处使用了StringTokenizer)
这很简单
StringTokenizer tokens=new StringTokenizer(myDateAsString, "/");
执行nextToken,在返回日期之前,将其解析为整数并返回。
在返回减法1之前,请记住一个月
我将发布您创建的第一个和其他两个的代码:
public int getMeD(String fecha){
int miDia = 0;
String tmd = "0";
StringTokenizer tokens=new StringTokenizer(fecha, "/");
tmd = tokens.nextToken();
miDia = Integer.parseInt(tmd);
return miDia;
}
2然后创建日历
3获取我当前的日期(今天)
4创建时间日历,以进入未来10天
5比较所有3个日历
基本上,这里你会问我被告知的日期是否确实发生在未来,(&&&)如果被告知的日期也比未来的日期少10天,那么请告诉我“事件肯定会在未来10天内发生!!”否则请告诉我:
“活动将不会在未来10天内举行”
if((cal.getTimeInMillis()>curr.getTimeInMillis())&&(cal.getTimeInMillis()
好了,伙计们,我希望这能有所帮助。给你们大家一个大大的拥抱,祝你们的项目好运
和平。
YOAV.如果比较只涉及年、月和日,则可以使用此方法检查c1是否在c2之前。丑陋,但有效
public static boolean before(Calendar c1, Calendar c2){
int c1Year = c1.get(Calendar.YEAR);
int c1Month = c1.get(Calendar.MONTH);
int c1Day = c1.get(Calendar.DAY_OF_MONTH);
int c2Year = c2.get(Calendar.YEAR);
int c2Month = c2.get(Calendar.MONTH);
int c2Day = c2.get(Calendar.DAY_OF_MONTH);
if(c1Year<c2Year){
return true;
}else if (c1Year>c2Year){
return false;
}else{
if(c1Month>c2Month){
return false;
}else if(c1Month<c2Month){
return true;
}else{
return c1Day<c2Day;
}
}
}
之前的公共静态布尔值(日历c1、日历c2){
int c1Year=c1.get(日历年);
int c1Month=c1.get(Calendar.MONTH);
int c1Day=c1.get(日历.月的第天);
int c2Year=c2.get(日历年);
int c2Month=c2.get(日历月);
int c2Day=c2.get(日历,月的第天);
如果(c1Yearc2Year){
返回false;
}否则{
如果(c1月>c2月){
返回false;
}else if(c1Month使用compareTo method..并返回整数值。if返回-ve当前日期前几天else return+ve当前日期后几天欢迎使用Stack Overflow。欢迎您的热情(如果您不喜欢粗体大写字母)。但是你的帖子与被问的问题只有一点点联系。请先看这篇文章。显然,你可以在这里添加答案。但在回答之前,你需要了解一些要点。首先,不要添加以前添加了相同代码或建议的答案。其次,不要添加ove如果用户特别询问了问题以及他需要解决的问题,则答案会非常复杂。第三,如果您想对答案或问题提出任何建议,可以添加注释。此答案是新的,以前没有发布过,因此没有问题现在您可以像这样比较两个日期:calendar1.compareTo(calendar2)
然后返回-1:通过的日期--0:当前日期--1:第二天
Calendar caltemp = new GregorianCalendar(); // temp cal
caltemp.setTimeInMillis(System.currentTimeMillis());
caltemp.add(calact.DAY_OF_MONTH, 10); // we move into the future
if((cal.getTimeInMillis() > curr.getTimeInMillis()) && (cal.getTimeInMillis()< curr.getTimeInMillis()))
{ System.out.println ("EVENT WILL TAKE PLACE FOR SURE WITHIN THE NEXT 10 DAYS!!");}
else
{ System.out.println ("EVENT WILL *NOT* TAKE PLACE WITHIN THE NEXT 10 DAYS");}
public static boolean before(Calendar c1, Calendar c2){
int c1Year = c1.get(Calendar.YEAR);
int c1Month = c1.get(Calendar.MONTH);
int c1Day = c1.get(Calendar.DAY_OF_MONTH);
int c2Year = c2.get(Calendar.YEAR);
int c2Month = c2.get(Calendar.MONTH);
int c2Day = c2.get(Calendar.DAY_OF_MONTH);
if(c1Year<c2Year){
return true;
}else if (c1Year>c2Year){
return false;
}else{
if(c1Month>c2Month){
return false;
}else if(c1Month<c2Month){
return true;
}else{
return c1Day<c2Day;
}
}
}