如何在java/android中格式化日期

如何在java/android中格式化日期,java,android,datetime,simpledateformat,date-formatting,Java,Android,Datetime,Simpledateformat,Date Formatting,我正在尝试开发一个android应用程序,因为我从服务器上获得了一些数据 在这里,我需要转换一个以给定格式出现的日期“2013-12-31T15:07:38.6875000-05:00” 我需要将其转换为日期对象或日历对象我们如何才能做到这一点 我已经尝试了下面给出的代码。但这并没有达到我的期望 String dateString="2013-12-31T15:07:38.6875000-05:00"; Date date = null; DateFormat df = new SimpleDa

我正在尝试开发一个android应用程序,因为我从服务器上获得了一些数据

在这里,我需要转换一个以给定格式出现的日期“2013-12-31T15:07:38.6875000-05:00” 我需要将其转换为日期对象或日历对象我们如何才能做到这一点

我已经尝试了下面给出的代码。但这并没有达到我的期望

String dateString="2013-12-31T15:07:38.6875000-05:00";
Date date = null;
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
try {
    date = df.parse(dateString);
} catch (ParseException e) {
    e.printStackTrace();
}
return date;

您的格式字符串与您获得的日期格式不匹配。应使用以下格式字符串:

"yyyy-MM-dd'T'HH:mm:ss.SSSX"
  • SSS
    表示毫秒
  • X
    用于

您可以对字符串格式化程序使用以下格式

“yyyy-MM-dd'HH:MM:ss.SSSZ”

资料来源:


阅读:

步骤1:

当您将
2013-12-31T15:07:38.6875000-05:00
作为日期值时,您需要定义一种格式来解析日期

String myDateString= "2013-12-31T15:07:38.6875000-05:00";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try {
    date = df.parse(myDateString);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
第二步: 解析日期后,可以将其格式化为所需格式

例如:让我们将解析的
Date
对象转换为
yyyy-MM-dd

SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd");
String strNewDate = newFormat.format(date);
使用此代码

 String string = "2013-12-31T15:07:38.6875000-05:00";
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

如果使用库,可以跳过格式化程序,直接将字符串提供给对象的构造函数

/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
//导入org.joda.time.*;
//导入org.joda.time.format.*;
DateTime DateTime_DefaultTimeZone=新的日期时间(“2013-12-31T15:07:38.6875000-05:00”);
输出到本地化时区和语言

String localizedOutput=DateTimeFormat.forStyle(“LS”)。withLocale(Locale.CANADA\u FRENCH)。withZone(DateTimeZone.forID(“America/Montreal”)。print(dateTime\u DefaultTimeZone);
转储到控制台

System.out.println(“dateTime\u DefaultTimeZone:+dateTime\u DefaultTimeZone”);
System.out.println(“localizedOutput:+localizedOutput”);
当运行时

dateTime\u default时区:2013-12-31T12:07:38.687-08:00
本地化输出:31 décembre 2013 15:07

这里的dateString是什么?我刚刚编辑了我的问题??仅供参考,该格式是标准格式。这仍然没有解决吗?好的。您可以打印
日期字符串的值吗。它包含什么值?如果这是你所展示的价值观,它应该会起作用。这和我在问题中提到的一样。2013-12-31T15:07:38.6875000-05:00。。最后它被清除了。。。我刚把“z”从表中去掉end@user1672337实际上,您需要使用
X
而不是
Z
。时区是ISO 8601格式。@user1672337删除
Z
不会给您正确的时间。您只是放弃了时区本身。那是不对的。使用
X
而不是
Z
。这里有一些问题,当我们将这个日期转换为2013年12月31日星期二17:02:13 GMT时,时间发生了一些变化,因为我最后不能使用“Z”