1

好的,这是我现在在 Android 中的问题。在我们的数据库中,有一个这种格式的时间戳,8/15/2013 2:00:48 PM通过一个 .NET WebService,我在 Android 中得到了同样的时间:2013-08-15T14:00:48-07:00. 现在我想将此格式转换为可用于比较的日期时间格式(例如,此 Web 服务提供设备登录失败的每个实例,因此我们要检查两次发生之间的时间量以查看是否有任何问题)。下面我有这段代码,我正在尝试使用 JODA Time,但它仍然没有返回正确的格式:

public static Date convertStringToDate(String input)  {
    String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
    DateTimeFormatter formatter = DateTimeFormat.forPattern(pattern);
    DateTime dateTime = formatter.parseDateTime(input);
    return dateTime.toDate();
    //printout shows: Thu Aug 15 17:00:48 EDT 2013
}

我知道服务器正在返回一些难以使用的糟糕时间格式(在我们拥有的 iOS 应用程序中使用它需要一段时间,即使在那里它仍然相当笨重)所以我不介意改变网络服务或查询是否会使事情变得更容易。

4

2 回答 2

2

我有一个非常相似的格式,我使用 SimpleDateFormat 解析它,试试这个:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZ", Locale.US);
Date dateTime = format .parse(value);
于 2013-08-15T21:54:39.473 回答
0

我的理解是你已经有了正确的日期实例,你需要将它解析为字符串。

我建议你使用:

DateFormat formatter = new SimpleDateFormat("d/MM/yyyy hh:mm:ss a");
//this will give you the format '8/15/2013 2:00:48 PM'

String d = formatter.format(date); 

希望这可以帮助。

编辑:

还接缝你希望你的日期实例在 -07:00 时区所以你可以改变你的行

DateTime dateTime = formatter.parseDateTime(input);

为了

DateTime dateTime = formatter.withZone(DateTimeZone.forID("-07:00")).parseDateTime(input);
于 2013-08-16T17:28:18.373 回答