Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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
设置datetime字符串中毫秒的精度:Python_Python - Fatal编程技术网

设置datetime字符串中毫秒的精度:Python

设置datetime字符串中毫秒的精度:Python,python,Python,我有一个日期时间字符串“2017-02-14T18:21:14.080+05:30”。 我使用的代码是 from dateutil.parser import parse print parse("2017-02-14T18:21:14.080+05:30") 我得到的datetime.datetime对象是 2017-02-14 18:21:14.080000+05:30 python是否允许我将时区信息之前显示的毫秒值的精度设置为3,以便将输出设置为 2017-02-14 18:21:1

我有一个日期时间字符串“2017-02-14T18:21:14.080+05:30”。 我使用的代码是

from dateutil.parser import parse
print parse("2017-02-14T18:21:14.080+05:30")
我得到的datetime.datetime对象是

2017-02-14 18:21:14.080000+05:30
python是否允许我将时区信息之前显示的毫秒值的精度设置为3,以便将输出设置为

2017-02-14 18:21:14.080+05:30

没有内置的方法要求Python以毫秒为单位显示日期。 您必须执行一些字符串操作才能获得所需的结果:

from dateutil.parser import parse
import datetime as DT
date = parse("2017-02-14T18:21:14.080+05:30")
microsecond = date.microsecond
millisecond = int(round(microsecond/1000))
print(str(date).replace('.{:06d}'.format(microsecond), 
                        '.{:03d}'.format(millisecond)))
屈服

2017-02-14 18:21:14.080+05:30
请参阅以获取解决方案和解决方案 讨论如何将微秒转换为毫秒。请注意 困难在于
date.microsecond
可能返回一个小于6的数字 数字,如果微秒为0,则在某些操作系统上,
str(date)
may)。这 这就是为什么之前要费尽心思将微秒格式化为6位数的原因 替换为格式为3位的毫秒

使用上面的代码,在一个0时下降微秒的操作系统上,没有 将显示毫秒。如果您希望始终显示毫秒格式 到小数点后3位,您必须从头开始构建日期字符串:

from dateutil.parser import parse
import datetime as DT
date = parse("2017-02-14T18:21:14.080+05:30")
microsecond = date.microsecond
millisecond = round(microsecond/1000)
utcoffset = date.strftime('%z')
utcoffset_string = '{}:{}'.format(utcoffset[:-2], utcoffset[-2:])
print('{}{}{}'.format(date.strftime('%Y-%m-%dT%H:%M:%S'), 
                      '.{:03d}'.format(millisecond),
                      utcoffset_string))

只要值是正确的,你为什么要关心它的打印方式呢?值是正确的,但是输出输入到的程序要求这样。谢谢,你的解决方案适合我的需要。我的一个朋友建议进行字符串操作,但我想知道是否有一些函数可以实现这一点。我是python新手,搜索了很多次,但都没有完成。解决方案1给了我一个错误,上面写着ValueError:类型为“float”的对象的未知格式代码“d”。尝试用f替换d,但返回相同的字符串。最终强制将所有内容转换为int,代码就正常工作了。留下在这里工作的代码,如下。再次感谢。微秒=int(dt.微秒)毫秒=int(圆形(微秒/1000))打印(str(dt).replace(“.{:06d}.”格式(微秒),“.{:03d}.”格式(毫秒)))