Java 使用SimpleDataFormat将一个日期格式转换为另一个日期格式,而不使用外部库
我试图让下面的代码位同时处理两个输入Java 使用SimpleDataFormat将一个日期格式转换为另一个日期格式,而不使用外部库,java,regex,datetime,Java,Regex,Datetime,我试图让下面的代码位同时处理两个输入字符串。它适用于没有破折号的版本(这是SimpleDateFormat的限制)。我得到了第二个输入的ParseExceptionJodaTime是相关帖子中的一个建议,但是,我不能使用它,我使用的是Java6。不过,我希望避免使用正则表达式解决方案,对于我所用的格式,一个简单的解决方案可以同时适用于两个字符串。我现在要开车回家,几个小时后再看看这个,看看我发现的最新情况 import java.text.DateFormat; import java.text
字符串。它适用于没有破折号的版本(这是SimpleDateFormat
的限制)。我得到了第二个输入的ParseException
JodaTime
是相关帖子中的一个建议,但是,我不能使用它,我使用的是Java6。不过,我希望避免使用正则表达式解决方案,对于我所用的格式,一个简单的解决方案可以同时适用于两个字符串。我现在要开车回家,几个小时后再看看这个,看看我发现的最新情况
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));
}
}
很可能是日期字符串
(GWT扩展小部件)的源在SimpleDataFormat
的上下文中错误地返回了它。也就是说,由于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 PST 2014”
,诸如此类?“它适用于没有分号的情况”
——你的分号是什么意思?为什么会有奇怪的输入:import com.google.gwt.thirdparty.streamhtmlparser.ParseException代码>?我是说破折号。这是错误的例外。编辑的问题反映了这一点。您不能使用“Wed Jul 02 00:00:00 GMT-400 2014”。replaceAll(“[\-]”,“”)代码>?不,用空格替换它不起作用。