简体   繁体   English

从日历对象检索年月日期时出错

[英]Error in Retrieving Year Month Date from Calender object

All this is my program where i am trying the folowing 这就是我正在尝试的以下程序

Below is my code for Dates functionality... 以下是我的日期功能代码...

import java.text.SimpleDateFormat;
import java.util.*;
import java.text.*;
public class DateToCalender {
public static void main(String args[]){
//String strFormat="yyyymmdd";

//DateFormat myDateFormat = new SimpleDateFormat(strFormat);
DateFormat df= new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Calendar start=Calendar.getInstance();
try {
Date fromDt =(Date)df.parse("20111207");
//Date myDate = new Date();
//myDate = (Date)myDateFormat.parse("20111207");
//myGDate.setTime(myDate);
start.setTime(fromDt);

                start.set(Calendar.MONTH,(start.get(Calendar.MONTH)+1));
System.out.println(start);

System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH)-1);
System.out.println(start.get(Calendar.DAY_OF_MONTH));
//System.out.println("From My class"+myGDate.get(Calendar.MONTH));

//System.out.println("From My class new month"+(myGDate.get(Calendar.MONTH)+1));

} catch (ParseException e) {
System.out.println("Invalid Date Parser Exception ");
e.printStackTrace();
}
} 
}  

when iam executing this code iam getting folowwing o/p 当我执行此代码时,我将获得以下o / p

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA
=1,YEAR=2011,MONTH=12,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH=7,DAY_OF_YEAR=341,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=19800000,DST_OFFSET=0]
2011
0
7

** issue is : ** 问题是:

Though iam entering date as 2011/12/07
            I am getting     year as 2011
                             month as 0
                             date as 7
Can some one help in resolving above issue

Could any body please let me know , how this can be resolved . 请问有什么机构可以解决这个问题。

Don't subtract 1 from the month; 不要从月份中减去1; Calendar already knows that it's zero-based. Calendar已经知道它是从零开始的。

It seems to me like you're doing far too much work here. 在我看来,您在这里要做的工作太多了。 Why can't you just do this? 你为什么不能这样做?

private static final DateFormat DEFAULT_DATE_FORMAT;

static {
    DEFAULT_DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
    DEFAULT_DATE_FORMAT.setLenient(false);
}



public Calendar getCalendar(String dateAsString) {
    Calendar value = Calendar.getInstance();
    Date d = DEFAULT_DATE_FORMAT.parse(dateAsString);
    value.setTime(d);
    return value;
}

There's an exception that needs to be added to the method signature, but you get the idea. 需要将一个例外添加到方法签名中,但是您可以理解。 Look at the Calendar javadocs. 查看Calendar javadocs。 This could be easier. 这可能更容易。

setting a condition to check the month can resolve your problem: 设置条件以检查月份可以解决您的问题:

try {    
Date fromDt =(Date)df.parse("20131209");
start.setTime(fromDt);
start.set(Calendar.MONTH,(start.get(Calendar.MONTH)));
int month = start.get((Calendar.MONTH));
if (month ==11){    
System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH)+1);
System.out.println(start.get(Calendar.DAY_OF_MONTH));
}else{
start.set(Calendar.MONTH,(start.get(Calendar.MONTH))+1);   
System.out.println(start.get(Calendar.YEAR));
System.out.println(start.get(Calendar.MONTH));
System.out.println(start.get(Calendar.DAY_OF_MONTH));
}
}

this will print out : 这将打印出来:

2013 2013年

12 12

9 9

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM