Calendar cannot be resolved to a type

Four Stars

Calendar cannot be resolved to a type

Hi

I try to convert a date with timezone information into a simple date UTC. 

The source Date for example is: "2017-05-12T10:15:22+02:00"

The target date with subtraction of the time zone information would be "12/05/2017 08:15:22"

It works already for one of may jobs but unfortunately not for the others.

I also wonder if there is a simpler way.

 

The error message is:

- Calendar cannot be resolved to a type
- GregorianCalendar cannot be resolved to a type

 

The code is:

// declare and init variables and data structures
String datetime = "";
String d = "";
String t = ""; 
String add = "";
String year = ""; 
String month = ""; 
String day = ""; 
String finDate = "";
int a; 
Date myDateTime = null;
String myString = ""; 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar cal = new GregorianCalendar();
HashMap<String, String> hm = new HashMap<String, String>();


// put values in hash map
hm.put("NUMStartDate", input_row._NUMStartDate_);
hm.put("NUMEndDate", input_row._NUMEndDate_);
hm.put("PublicationTimeStamp", input_row._PublicationTimeStamp_);
hm.put("ModificationTimeStamp", input_row._ModificationTimeStamp_);
hm.put("TimeStamp", input_row._TimeStamp_);

// iterate over values in hash map and extract date and time
Set set = hm.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
 	Map.Entry mentry = (Map.Entry)iterator.next();
	datetime = mentry.getValue() + "";
   switch (datetime) { 
      	case "null": 
      		datetime = "9999-01-01T00:00:00+00:00";
      	}
      d = datetime.substring(0, 10) + "";
      t = datetime.substring(11, datetime.length()-9);
      add = datetime.substring(19, datetime.length()-3);
      a = Integer.parseInt(add);
      myString =  d + " " + t;
      try
      {
            myDateTime = simpleDateFormat.parse(myString);
      }
      catch (ParseException e)
      {
            e.printStackTrace();
      }
      cal.setTime(myDateTime);
      // subtract hours to date
      cal.add(Calendar.HOUR_OF_DAY, - a);
      Date date = cal.getTime();

      datetime = simpleDateFormat.format( date );
      d = datetime.substring(0, 10) + "";
      t = datetime.substring(11, datetime.length());
      year = datetime.substring(0, 4);
	  month = datetime.substring(5, 7);
	  day = datetime.substring(8, 10);

    finDate =  day + "/" + month + "/" + year + " " + t;

    //System.out.println("Key: " + mentry.getKey() + " " + finDate + "");

		switch (mentry.getKey() + "") {
      	case "NUMStartDate":
      		output_row._NUMStartDate_ = finDate;
      	case "NUMEndDate":
      		output_row._NUMEndDate_ = finDate;
      	case "PublicationTimeStamp":
      		output_row._PublicationTimeStamp_ = finDate;
      	case "ModificationTimeStamp":
      		output_row._ModificationTimeStamp_ = finDate;
      	case "TimeStamp":
      		output_row._TimeStamp_ = finDate;
      	      		
    }

}

 


Accepted Solutions
Community Manager

Re: Calendar cannot be resolved to a type

That is a lot of code to format a date. This works and is a little less work....

String source = "2017-05-12T10:15:22+02:00";
source = source.substring(0, source.lastIndexOf(':'))+source.substring(source.lastIndexOf(':')+1);
System.out.println(source);
Date now = routines.TalendDate.parseDateInUTC("yyyy-MM-dd'T'HH:mm:ssZ", source, true);
System.out.println(routines.TalendDate.formatDateInUTC("dd/MM/yyyy HH:mm:ss", now));

The +02:00 causes an issue as it should be +0200 without the ":". Remove this and the code you need is already provided by Talend.

 

Your code is causing the error this post is about due to this line....

Calendar cal = new GregorianCalendar();

You can fix it with this....

java.util.Calendar cal = new java.util.GregorianCalendar();

....but I suspect you will get more errors regarding HashMap, Map, Set, etc...


All Replies
Community Manager

Re: Calendar cannot be resolved to a type

That is a lot of code to format a date. This works and is a little less work....

String source = "2017-05-12T10:15:22+02:00";
source = source.substring(0, source.lastIndexOf(':'))+source.substring(source.lastIndexOf(':')+1);
System.out.println(source);
Date now = routines.TalendDate.parseDateInUTC("yyyy-MM-dd'T'HH:mm:ssZ", source, true);
System.out.println(routines.TalendDate.formatDateInUTC("dd/MM/yyyy HH:mm:ss", now));

The +02:00 causes an issue as it should be +0200 without the ":". Remove this and the code you need is already provided by Talend.

 

Your code is causing the error this post is about due to this line....

Calendar cal = new GregorianCalendar();

You can fix it with this....

java.util.Calendar cal = new java.util.GregorianCalendar();

....but I suspect you will get more errors regarding HashMap, Map, Set, etc...

Four Stars

Re: Calendar cannot be resolved to a type

Great, thanks for your quick answer, it works.

2019 GARNER MAGIC QUADRANT FOR DATA INTEGRATION TOOL

Talend named a Leader.

Get your copy

OPEN STUDIO FOR DATA INTEGRATION

Kickstart your first data integration and ETL projects.

Download now

What’s New for Talend Summer ’19

Watch the recorded webinar!

Watch Now

Best Practices for Using Context Variables with Talend – Part 4

Pick up some tips and tricks with Context Variables

Blog

How Media Organizations Achieved Success with Data Integration

Learn how media organizations have achieved success with Data Integration

Read

Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.

Download