我尝试使用以下位代码来处理输入Strings
。它适用于没有破折号的人(这是SimpleDateFormat
的限制)。我得到ParseException
作为第二个输入。 JodaTime
一直是相关帖子中的一个建议,但是,我无法使用它,而且我使用的是Java 6.我想避免使用正则表达式解决方案,但这是一个简单的解决方案。我有的格式适用于两个字符串。我现在要开车回家,并在几个小时内再次检查,并对我发现的内容进行更新。
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class testcc {
public static void main(String[] args) {
String input = "Wed Jul 02 00:00:00 EDT 2014";
// String input = "Wed Jul 02 00:00:00 GMT-400 2014";
DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
Date date = null;
try {
date = df.parse(input);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
DateFormat dfTarget = new SimpleDateFormat("dd-MMM-yyy");
System.out.println(dfTarget.format(date));
}
}
答案 0 :(得分:0)
日期String
(GWT扩展小部件)的来源可能会在SimpleDateFormat
的上下文中错误地返回。也就是说,因为z
期望冒号(GMT-4:00
),所以没有冒号。我最终得到了一些像这样的傻话:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class testcc {
public static void main(String[] args) {
// String input = "Wed Jul 02 00:00:00 PST 2014";
String input = "Wed Jul 02 12:00:00 GMT-400 2014";
int pos = input.indexOf('-');
if (pos == -1)
pos = input.indexOf('+');
if (pos != -1) {
input = input.substring(0, pos + 2) + ":"
+ input.substring(pos + 2, input.length());
}
DateFormat df = new SimpleDateFormat("EEE MMM d kk:mm:ss z yyyy", Locale.ENGLISH);
Date date = null;
try {
date = df.parse(input);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
DateFormat dfTarget = new SimpleDateFormat("dd-MMM-yyy");
System.out.println(dfTarget.format(date));
}
}
是否有任何我错过的情况,因为字符串总是:"Wed Jul 02 12:00:00 GMT-400 2014"
或"Wed Jul 02 12:00:00 EST 2014"
或"Wed Jul 02 12:00:00 PST 2014"
等等?