Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 为什么我的RFC 2822日期没有被chrono解析?_Date_Rust_Rfc2822_Rust Chrono - Fatal编程技术网

Date 为什么我的RFC 2822日期没有被chrono解析?

Date 为什么我的RFC 2822日期没有被chrono解析?,date,rust,rfc2822,rust-chrono,Date,Rust,Rfc2822,Rust Chrono,我正在编写一些代码来解析RSS提要,但我在这方面遇到了问题。 如果查看该提要,则日期编码为2018年8月6日周一00:00:00 UTC。对我来说,它看起来像RFC2822 我试图使用chrono的DateTime::parse\u from\u rfc2822解析它,但是我得到了ParseError(NotEnough) 我做错什么了吗?我一定要用某种方法破解它吗 我使用的是在纠正错误方面做得很好的工具(大多数时候)。我认为这不会影响解析。。。但是谁知道呢?RFC2822日期/时间格式在RFC

我正在编写一些代码来解析RSS提要,但我在这方面遇到了问题。
如果查看该提要,则日期编码为2018年8月6日周一00:00:00 UTC。对我来说,它看起来像RFC2822

我试图使用chrono的
DateTime::parse\u from\u rfc2822
解析它,但是我得到了
ParseError(NotEnough)

我做错什么了吗?我一定要用某种方法破解它吗


我使用的是在纠正错误方面做得很好的工具(大多数时候)。我认为这不会影响解析。。。但是谁知道呢?

RFC2822日期/时间格式在RFC中被很好地编码为以下格式:

date-time       =       [ day-of-week "," ] date FWS time [CFWS]
day-of-week     =       ([FWS] day-name) / obs-day-of-week
day-name        =       "Mon" / "Tue" / "Wed" / "Thu" /
                        "Fri" / "Sat" / "Sun"
date            =       day month year
year            =       4*DIGIT / obs-year
month           =       (FWS month-name FWS) / obs-month
month-name      =       "Jan" / "Feb" / "Mar" / "Apr" /
                        "May" / "Jun" / "Jul" / "Aug" /
                        "Sep" / "Oct" / "Nov" / "Dec"
day             =       ([FWS] 1*2DIGIT) / obs-day
time            =       time-of-day FWS zone
time-of-day     =       hour ":" minute [ ":" second ]
hour            =       2DIGIT / obs-hour
minute          =       2DIGIT / obs-minute
second          =       2DIGIT / obs-second
zone            =       (( "+" / "-" ) 4DIGIT) / obs-zone
其中,
obs区域
定义如下:

obs-zone        =       "UT" / "GMT" /          ; Universal Time
                                                ; North American UT
                                                ; offsets
                        "EST" / "EDT" /         ; Eastern:  - 5/ - 4
                        "CST" / "CDT" /         ; Central:  - 6/ - 5
                        "MST" / "MDT" /         ; Mountain: - 7/ - 6
                        "PST" / "PDT" /         ; Pacific:  - 8/ - 7
                        %d65-73 /               ; Military zones - "A"
                        %d75-90 /               ; through "I" and "K"
                        %d97-105 /              ; through "Z", both
                        %d107-122               ; upper and lower case

很多人在使用自己的时间戳生成库时都会出错,这是一个特别的问题—如何正确标记
RFC2822
TZ偏移量。之所以
UT
是因为
UTC
UT
不完全相同(一个有额外的秒数,另一个有…四个变量!RFC没有定义使用哪一个;它们都有细微的不同)。

显示一些锈迹代码,以便其他人可以重现您的问题。
Mon,2018年8月6日UTC 00:00:00
绝对不是RFC2822格式的时间戳。RFC2822中指定的UTC有效符号(搜索
obs区域
)为
UT
,而非
UTC
@SébastienRenauld dam。。。它是rfc822消毒剂扩展的候选产品吗?可能。这是一个众所周知的问题,人们试图推出自己的日期时间生成器,tbh。他们看到“GMT”,他们认为它将是“UTC”,而事实是世界时的真实时区是世界时。不管怎么说,这个名字有很多背后的故事。请尝试将“UTC”替换为“UT”,再试一次,并告诉我它是否有效。如果是的话,我会写一个包含所有琐事的答案
obs-zone        =       "UT" / "GMT" /          ; Universal Time
                                                ; North American UT
                                                ; offsets
                        "EST" / "EDT" /         ; Eastern:  - 5/ - 4
                        "CST" / "CDT" /         ; Central:  - 6/ - 5
                        "MST" / "MDT" /         ; Mountain: - 7/ - 6
                        "PST" / "PDT" /         ; Pacific:  - 8/ - 7
                        %d65-73 /               ; Military zones - "A"
                        %d75-90 /               ; through "I" and "K"
                        %d97-105 /              ; through "Z", both
                        %d107-122               ; upper and lower case