如何使用此返回日历对象。
public static Calendar getDeCal(Timestamp timeStamp) {
Calendar tempCal = new GregorianCalendar();
tempCal.setTime(new Date(timeStamp.getTime()));
return tempCal;
}
它以毫秒为单位发出这种格式。
2014-06-25T21:34:04+05:30
但我们需要这种格式为毫秒
2014-06-25T21:34:04 .555+05:30
根据上述要求,我已将代码更改为此格式
public static Calendar getDateCal(Timestamp timeStamp) throws ParseException {
Calendar tempCal = new GregorianCalendar();
SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd 'T' hh:mm:ss.SS z");
String date1 = ft.format(timeStamp.getTime());
tempCal.setTime(ft.parse(date1));
return tempCal;
}
但是在跑步时给出错误。
对此有任何帮助。
我在独立应用程序中毁了这个错误。
Exception in thread "main" java.lang.IllegalArgumentException
at java.util.Date.parse(Unknown Source)
at java.util.Date.<init>(Unknown Source)
答案 0 :(得分:0)
如果要将Calendar对象作为变量并打印它,请在准备好显示输出时使用SimpleDateFormat对象对其进行格式化。 我没有看到任何方法通过格式字符自动填充时区冒号,所以我使用子字符串来添加一个。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss. SSSZZZ");
Calendar c = Calendar.getInstance();
String formattedTime = sdf.format(c.getTime());
int colon = formattedTime.length()-2;
formattedTime = formattedTime.substring(0,colon) + ":"
+ formattedTime.substring(colon);
System.out.println(formattedTime);
输出:2015-01-05T13:30:49。 635-06:00
编辑: 如果您正在寻找一个日历并且可以以给定格式生成输出的单个对象,则必须创建一个新类来将两者连接在一起。输出和日历对象是两个不同的东西。日历代表时间。输出表示人类可读部分,即字符串。
public class PersonalCalendar extends GregorianCalendar
{
SimpleDateFormat sdf;
public PersonalCalendar(Timestamp timestamp)
{
super();
setTime(timestamp);
sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss. SSSZZZ");
}
public String toString()
{
String formattedTime = sdf.format(getTime());
int colon = formattedTime.length()-2;
formattedTime = formattedTime.substring(0,colon) + ":"+ formattedTime.substring(colon);
return formattedTime;
}
}
使用中。
Calendar c = new PersonalCalendar(timestamp);
System.out.println(c.toString());
输出:2015-01-06T09:29:29。 783-06:00