Java7在SimpleDateFormat
类中引入了对ISO 8601格式的支持,通过字符x
(而不是大小写z
)。在Java6中支持这样的格式需要预处理,所以最好的方法就是这个问题。
这个新格式是Z
(大写Z)的超集,还有两个其他变体:
public Date parse(String date, ParsePosition pos)
{
String iso = ... // Replace the X with a Z timezone string, using a regex
if (iso.length() == date.length())
{
return null; // Not an ISO 8601 date
}
Date parsed = super.parse(iso, pos);
if (parsed != null)
{
pos.setIndex(pos.getIndex()+1); // Adjust for ':'
}
return parsed;
}
请注意,上面的子类SimpleDateFormat
对象必须使用相应的z
基于模式进行初始化,也就是说,如果子类是ExtendedSimpleDateFormat
,并且您希望解析符合模式yyyy-mm-dd't'hh:mm:ssx
的日期,那么您应该使用实例化为
new ExtendedSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
在前面提到的问题中,建议使用regex:(?=[0-9]{2}$)
来去掉“:”,在类似的问题中,建议使用regex(?<=[+-]\d{2})$
在需要时将“分钟”字段追加为00
。
显然,成功运行这2个替换可以用于实现全部功能。因此,重写的parse()
方法中的iso
局部变量将设置为
iso = date.replaceFirst(":(?=[0-9]{2}$)","");
或
iso = iso.replaceFirst("(?<=[+-]\\d{2})$", "00");
使用if
签入,以确保pos
值稍后也正确设置,并确保length()
比较在前面进行。
看来你可以用这个:
import java.util.Calendar;
import javax.xml.bind.DatatypeConverter;
public class TestISO8601 {
public static void main(String[] args) {
parse("2012-10-01T19:30:00+02:00"); // UTC+2
parse("2012-10-01T19:30:00Z"); // UTC
parse("2012-10-01T19:30:00"); // Local
}
public static Date parse(final String str) {
Calendar c = DatatypeConverter.parseDateTime(str);
System.out.println(str + "\t" + (c.getTime().getTime()/1000));
return c.getTime();
}
}
问题内容: Java 7 通过字符(而不是大写或小写)引入了对ISO 8601格式的支持。在Java 6中支持此类格式需要进行预处理,因此最好的方法就是问题。 此新格式是(大写字母Z)的超集,还有2个其他变体: “分钟”字段是可选的(即有效的是2位数而不是4位数的时区) 冒号(’:’)可用于将两位数字的“小时”字段与两位数字的“分钟”字段分开。 因此,从Java 7文档的 可以看到,以下三种格式现
问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为
本文向大家介绍PowerShell中iso8601格式日期和DateTime对象互转实例,包括了PowerShell中iso8601格式日期和DateTime对象互转实例的使用技巧和注意事项,需要的朋友参考一下 一、iso8601格式转换成DateTime对象 这里主要用到datetime的静态方法static datetime ParseExact(string s, string format
有没有办法将ISO8601日期与Java进行比较?比如,知道字符串日期是否是良好的格式,知道月份是否为负数,以及 我还在搜索如何知道互联网上是否有课程可以比较两个ISO8601日期?比如,如果我有:2000-12-12和1999-05-06。我如何比较这两个日期,使之在年、月和日之间有准确的差异?
本文向大家介绍Python中的通用输出格式,包括了Python中的通用输出格式的使用技巧和注意事项,需要的朋友参考一下 在python中打印处理某些数据的结果时,我们可能需要以吸引人的格式或一定的数学精度输出它们。在本文中,我们将看到用于输出结果的不同选项。 使用格式 在这种方法中,我们使用称为format的内置函数。我们将{}用作将由格式提供的值的占位符。默认情况下,位置将使用格式函数中相同的值
问题内容: 如何转换此 格式 ( ISO8601格式 ): 2014-03-13T09:05:50.240Z 为此( MySQL DATE格式 ): 2014-03-13 在PHP中? 问题答案: 尝试这个 完整的日期功能文档可以在这里找到:http : //php.net/manual/en/function.date.php PHP函数“ strtotime”不执行任何其他操作,然后将您的时间