Android 将日期类型转换为java日期

Android 将日期类型转换为java日期,android,timestamp,Android,Timestamp,我从服务器上得到时间戳,如“2014-03-05T13:00:07.341Z” 我想将其设置为android日历,并将时间戳转换为am/pm。我已经完成了以下代码- TimeZone tz = TimeZone.getTimeZone("Asia/Calcutta"); Calendar cal1 = Calendar.getInstance(tz); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:s

我从服务器上得到时间戳,如“2014-03-05T13:00:07.341Z”

我想将其设置为android日历,并将时间戳转换为am/pm。我已经完成了以下代码-

TimeZone tz = TimeZone.getTimeZone("Asia/Calcutta");
Calendar cal1 = Calendar.getInstance(tz);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
dateFormat.setCalendar(cal1);
try{
    cal1.setTime(dateFormat.parse("2014/03/05T13:00:07.341Z"));
}catch(Exception e){
    e.printStackTrace();
}
我无法转换为上午/下午。怎么做?任何帮助都将不胜感激

如果要转换为特定格式,应使用单独的
DateFormat
。目前,您只显示了要解析的代码,而这只返回了一个
日期
——一个瞬间

您需要计算出输出格式所需的所有信息—例如,您希望如何表示日期,以及希望使用哪种语言环境

要调整的一些示例代码:

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
// Explicitly set it to UTC...
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
Date date = outputFormat.parse("2014/03/05T13:00:07.341Z", Locale.US);

// TODO: What format do you want, and what locale?
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd h:mm:ss a");
outputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
String text = outputFormat.format(date);
顺便说一句,如果出现
ParseException
,您应该怎么做还不是很清楚,但是您几乎可以肯定,不应该只是记录它,然后像什么都没发生一样继续

请注意,加尔各答时区仅与输出相关-输入已指定它使用UTC。

如果要转换为特定格式,应使用单独的
日期格式。目前,您只显示了要解析的代码,而这只返回了一个
日期
——一个瞬间

您需要计算出输出格式所需的所有信息—例如,您希望如何表示日期,以及希望使用哪种语言环境

要调整的一些示例代码:

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
// Explicitly set it to UTC...
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
Date date = outputFormat.parse("2014/03/05T13:00:07.341Z", Locale.US);

// TODO: What format do you want, and what locale?
DateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd h:mm:ss a");
outputFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
String text = outputFormat.format(date);
顺便说一句,如果出现
ParseException
,您应该怎么做还不是很清楚,但是您几乎可以肯定,不应该只是记录它,然后像什么都没发生一样继续


请注意,加尔各答时区仅与输出相关-输入已经指定它是UTC。

因此,在将其转换为字符串后,我必须调用Calendar的setTime()方法,该方法将设置时间,并且该方法接受日期对象。但当我尝试时,新的日期(字符串)被去除了。@user3201291:不,你根本不需要
日历。或者更确切地说,如果你真的想以一个日历结束,那么你谈论的“转换为am/pm”是很奇怪的,因为这是一个字符串表示问题;不是日历提供的东西。好的,我试试。谢谢你的回复。嘿,我试过了,但上面写着“2014-03-06T13:00:07.341Z”这个日期是不可接受的。因此date对象保持为空。我不明白为什么会这样。@user3201291:date
局部变量不是null-如果抛出异常,它根本没有值。然而,我发现了原因:你的文本有毫秒,但你的模式没有。我在回答中已经解决了这个问题,所以在将它转换为字符串后,我必须调用Calendar的setTime()方法来设置时间,该方法接受一个日期对象。但当我尝试时,新的日期(字符串)被去除了。@user3201291:不,你根本不需要
日历。或者更确切地说,如果你真的想以一个日历结束,那么你谈论的“转换为am/pm”是很奇怪的,因为这是一个字符串表示问题;不是日历提供的东西。好的,我试试。谢谢你的回复。嘿,我试过了,但上面写着“2014-03-06T13:00:07.341Z”这个日期是不可接受的。因此date对象保持为空。我不明白为什么会这样。@user3201291:date
局部变量不是null-如果抛出异常,它根本没有值。然而,我发现了原因:你的文本有毫秒,但你的模式没有。我在回答中已经解决了这个问题。