使用Regex从字符串中删除UTC DateTime?

kq0g1dla  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(112)

我正在寻找一种方法来快速剥离UTC DataTime值从字符串.字符串可能很长,可能不包含DateTime,但很可能:

string utctime = "1901-01-01T01:01:01.7730000";

寻找Regex:

utctime  = Regex.Replace(utctime, @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{4}", "");

但是,唉,它不起作用。

brtdzjyr

brtdzjyr1#

utctime = Regex.Replace(utctime, @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(([+-]\d{2}:\d{2})|Z)?", "");

正如其中一条评论所说,你的正则表达式不适用于UTC和其他格式。试试上面的方法。它将匹配带或不带偏移量的字符串,带或不带小数秒,仅日期等。

k10s72fa

k10s72fa2#

正确的指针和阅读正则表达式帮助了我!
答:

//                                : 2020 - 10 - 27  T  19 :  31 :  47 . 1670000 
utctime = Regex.Replace(utctime, @"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{7}", "");

要用正确的模式!
编辑添加Jon Skeet从评论中的解释:

"1901-01-01T01:01:01.7730000Z" and 
"1901-01-01T01:01:01.7730000+00:00"
are both values indicating a date/time in UTC.
"1901-01-01T01:01:01.7730000" is just a local date/time, 
                              in an unspecified time zone.

我过去很少使用正则表达式,但我想从现在开始我会使用更多!
资源:https://www.geeksforgeeks.org/write-regular-expressions/

相关问题