如何以自定义日期格式返回Calendar对象

时间:2015-01-05 18:27:19

标签: java date datetime timestamp

如何使用此返回日历对象。

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)

1 个答案:

答案 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