无论实际使用的字符串长度是多少,datetime.datetime.strptime似乎都强制指令匹配。通过使用较短的字符串,指令将强制datetime.datetime对象在字符串中使用“something”,而不考虑实际的指令。
这是正确的行为,有足够的输入来填充指令
>>> datetime.datetime.strptime('20180822163014', '%Y%m%d%H%M%S')
datetime.datetime(2018, 8, 22, 16, 30, 14)
但是,此指令将更改先前的解析
>>> datetime.datetime.strptime('20180822163014', '%Y%m%d%H%M%S%f')
datetime.datetime(2018, 8, 22, 16, 30, 1, 400000)
如果输入字符串不够长,有没有办法删除最右边的指令,而不是吃掉左边的指令?
我给C和ubuntu做了标记,因为文档上说
“支持的全套格式代码因平台而异,
因为Python调用平台C库的strftime()函数,并且
平台变化很常见。查看全套格式代码
在您的平台上受支持,请参阅strftime(3)文档。”
编辑:
man ctime
将以下结构显示为输出。有趣的是,微秒的精度似乎不受支持。
struct tm {
int tm_sec; /* Seconds (0-60) */
int tm_min; /* Minutes (0-59) */
int tm_hour; /* Hours (0-23) */
int tm_mday; /* Day of the month (1-31) */
int tm_mon; /* Month (0-11) */
int tm_year; /* Year - 1900 */
int tm_wday; /* Day of the week (0-6, Sunday = 0) */
int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */
int tm_isdst; /* Daylight saving time */
};