java解析所有日期格式_在Java中解析这种类型的日期格式?

小编典典

另一个答案是,由于您似乎只专注于String拆开(恕我直言,这不是一个好主意)。我们假设字符串是有效的ISO8601。您可以假设它 始终

是您引用的形式,还是仅适用于8601?如果是后者,则您必须像这些家伙那样应付一堆场景。

他们提出来验证8601替代方案的正则表达式是:

^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])

(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])

((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?

([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$

弄清楚如何挑出正确的捕获组,这让我显得有些呆滞。不过,以下将适用于您的特定情况:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Regex8601

{

static final Pattern r8601 = Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})T((\\d{2}):"+

"(\\d{2}):(\\d{2})\\.(\\d{3}))((\\+|-)(\\d{2}):(\\d{2}))");

//2010-09-18T10:00:00.000+01:00

public static void main(String[] args)

{

String thisdate = "2010-09-18T10:00:00.000+01:00";

Matcher m = r8601.matcher(thisdate);

if (m.lookingAt()) {

System.out.println("Year: "+m.group(1));

System.out.println("Month: "+m.group(2));

System.out.println("Day: "+m.group(3));

System.out.println("Time: "+m.group(4));

System.out.println("Timezone: "+m.group(9));

} else {

System.out.println("no match");

}

}

}

2020-11-23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值