Guest
(Guest)
March 13, 2009, 1:55am
1
Hi,
I want cretain amount of minutes to be added to current time and return the time format in HH:mm:ss (16:04:05). To get this I have following code but this is returning 16:4:5 instead 16:04:05 when minutes and seconds are <10(two digit). It is happening because Calender.Minute gives like that single digit <two digit.
We can do workaround for this by doing some conditions but I would like to check if we have any other nice way of doing.
IDataCursor pipelineCursor = pipeline.getCursor();
String addMin = IDataUtil.getString( pipelineCursor, “addMin” );
pipelineCursor.destroy();
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-mm-dd”);
//sdf.format (cal.getTime());
SimpleDateFormat sdf1 = new SimpleDateFormat(“HH:mm:ss”);
//sdf1.format (cal.getTime());
Calendar now = Calendar.getInstance();
now.add(Calendar.MINUTE,Integer.parseInt(addMin));
// pipeline
IDataCursor pipelineCursor_1 = pipeline.getCursor();
IDataUtil.put( pipelineCursor_1, “time”, sdf.format(cal.getTime()) );
IDataUtil.put( pipelineCursor_1, “time1”, sdf1.format(cal.getTime()) );
String addTime=String.valueOf(now.get(Calendar.HOUR_OF_DAY))+“:”+String.valueOf(now.get(Calendar.MINUTE))+“:”+String.valueOf(now.get(Calendar.SECOND));
IDataUtil.put( pipelineCursor_1, “hr”, String.valueOf(now.get(Calendar.HOUR_OF_DAY)));
IDataUtil.put( pipelineCursor_1, “min”, String.valueOf(now.get(Calendar.MINUTE)));
IDataUtil.put( pipelineCursor_1, “sec”, String.valueOf(now.get(Calendar.SECOND)));
IDataUtil.put( pipelineCursor_1, “addTime”, addTime );
pipelineCursor_1.destroy();
Thanks,
Kartheek
reamon
(reamon)
March 13, 2009, 2:39am
2
Is the value of the “time1” var “16:04:05”? It should be.
The value of “addTime” is “16:4:5” because you’re building the string yourself. This should do what you’re looking for:
[highlight=java]
IDataCursor pipelineCursor = pipeline.getCursor();
int addMin = IDataUtil.getInt(pipelineCursor, “addMin”, 0);
SimpleDateFormat sdf1 = new SimpleDateFormat(“HH:mm:ss”);
Calendar now = Calendar.getInstance();
now.add(Calendar.MINUTE, addMin);
IDataUtil.put(pipelineCursor, “time1”, sdf1.format(now.getTime()) );
pipelineCursor.destroy();[/highlight]
Guest
(Guest)
March 13, 2009, 10:22pm
4
I just wonder about one of the scenerios…
Ex:
date: 03/13/2009 and time: 23:50:30
Add 15min to the time than time: 00:05:30 but date is still 03/13/2009. In this case throws an error stating passed time or something like this.
any ideas…
Thanks,
Kartheek
Guest
(Guest)
March 13, 2009, 10:30pm
5
I think I got the solution…I am not sure but it is based on which Object you are using. I created another Calendar object and Calendar.getTime() of new object then it is fine…
below is the code…
// pipeline
IDataCursor pipelineCursor = pipeline.getCursor();
String addMin = IDataUtil.getString( pipelineCursor, “MinInterval” );
pipelineCursor.destroy();
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy/MM/dd”);
SimpleDateFormat sdf1 = new SimpleDateFormat(“HH:mm:ss”);
String addTime;
String schedDate;
try{
int min=Integer.parseInt(addMin);
Calendar now = Calendar.getInstance();
now.add(Calendar.MINUTE,min);
schedDate = sdf.format(now.getTime());
addTime=sdf1.format(now.getTime());
}catch (Exception e){
throw new ServiceException(e);
}
// pipeline
IDataCursor pipelineCursor_1 = pipeline.getCursor();
IDataUtil.put( pipelineCursor_1, “schedDate”, schedDate );
IDataUtil.put( pipelineCursor_1, “schedTime”, addTime );
pipelineCursor_1.destroy();
Thanks,
Kartheek