有一些非常重要的事情我花了一段时间才弄清楚,如果您正在寻找以下任何问题的答案,这对您来说非常有帮助:
为什么我的日期显示不正确?
为什么即使我手动设置时间它也显示不正确?
为什么月份和年份显示的比我设置的少一天?
由于某种原因,Java 像数组一样对月份值进行排序,我的意思是对于 Java,1 月是 0,12 月是 11。如果将 12 月设置为 12 月,将年份设置为 2012 年,那么一年也会发生同样的情况,然后尝试做一个月份和年份的“system.out.println”,它将显示我的月份为一月,年份为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 yourCalendar.DATE、yourCalendar.MONTH 和 yourCalendar.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 天内发生,因此我必须执行以下操作:
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 然后创建日历
Calendar cal = new GregorianCalendar(); // calendar
String myDateAsString= "15/07/2012"; // my Date As String
int MYcald = getMeD(myDateAsString); // returns integer
int MYcalm = getMeM(myDateAsString); // returns integer
int MYcaly = getMeY(myDateAsString); // returns integer
cal.set(MYcaly, MYcalm, MYcald);
3 获取我当前的日期(今天)
Calendar curr = new GregorianCalendar(); // current cal
calact.setTimeInMillis(System.currentTimeMillis());
4 创建时间日历以进入未来 10 天
Calendar caltemp = new GregorianCalendar(); // temp cal
caltemp.setTimeInMillis(System.currentTimeMillis());
caltemp.add(calact.DAY_OF_MONTH, 10); // we move into the future
5 比较所有 3 个日历
这里基本上你问我得到的日期是否肯定在未来发生并且 (&&) 如果给定的日期也小于未来 10 天的日期,那么请告诉我“事件将确保在接下来的 10 天内到位!!”否则给我看:
“事件将不会在接下来的 10 天内举行”。
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");}
好的,希望对大家有所帮助。给你们一个大大的拥抱,祝你们的项目好运!
和平。
YOAV。