我有一个被Dojo转换成RFC822格式的JS日期。函数调用- dojo.date.toRfc3339(jsDate)生成以下日期- 2007-02-26T20:15:00+02:00。
我有一个应用程序,它使用Java date SimpleDateFormat来解析上面生成的日期。由于时区的原因,我在解析此日期格式时遇到问题。我已经尝试使用
yyyy-mm-DD‘ssZ:mm:ssZ
这会失败,因为表示时区的“Z”不需要“:”字符。有人知道我将如何指定一个模式来处理带有':‘的RFC822日期吗?
修订:
感谢您正确地解释了我正在尝试做的事情:)我的意思是说日期是在RFC3339中生成的,我需要RFC822。看起来我将不得不覆盖JavaScript。我希望我不必这样做,并且可以指定日期格式模式,而不必修改任何Java代码,因为日期格式只是简单地注入到应用程序的Spring bean中。
为了完整起见,有没有一种方法可以在日期格式表达式中指定忽略序列中的字符(而不进行字符串操作/替换)?在这种情况下,我会说忽略任何':‘,或者干脆一起忽略时区?
发布于 2012-01-23 21:53:46
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtil {
public static Date ParseRFC3339DateFormat(String p_date)
{
try{
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String dts = p_date.replaceAll("([\\+\\-]\\d\\d):(\\d\\d)","$1$2");
return formatter.parse(dts);
}catch (Exception e) {
return null;
}
}
}发布于 2010-05-13 07:38:15
这是可行的
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-DD'T'hh:mm:ssZ");
format.parse("2007-02-26T20:15:00+02:00".replaceAll("([\\+\\-]\\d\\d):(\\d\\d)","$1$2"));(注意,我从格式中去掉了'Z‘格式说明符后面的最后一个冒号。)
发布于 2010-05-13 07:43:44
RFC822不允许冒号出现在日期的时区部分。它只需要4位数。该Dojo方法的名称表明它正在使用RFC3339。看起来它实际上和ISO8601的格式是一样的。如果您能够使用该库,那么Joda Time恰好具有与ISO8601兼容的ISODateTimeFormat。方法dateTimeNoMillis()看起来与Dojo格式匹配。它确实比标准的Java日期和时间API更好。否则,高咖啡因的建议将是可行的。
针对Jamen的更新,更新了
有没有办法让Dojo使用不包含时区的格式?然后,您可以在Java端调整格式以匹配。我对Dojo了解不多,也找不到任何关于它提供的toRfc3339函数的文档。
https://stackoverflow.com/questions/2823442
复制相似问题