字面上是this question的倒数,是否有一种从IronPython DateTime
获取.Net datetime
的简单方法?
DateTime
构造函数但那些都很混乱。这不起作用:
pydate = datetime.datetime.now()
csharp = DateTime(pydate) # Crashes, because .Net wants a 'long' for Ticks
是否有简单的演员或简短的方法来获得.Net想要的Ticks
?
答案 0 :(得分:5)
我很确定已经允许直接转换,但我错了。我在31f5c88中添加了它,但直到(目前未计划)2.7.6才能使用。
与此同时,最好的方法是使用timetuple
方法获取部分:
dt = datetime.now()
d = DateTime(*dt.timetuple()[:6])
# For UTC times, you need to pass 'kind' as a kwarg
# because of Python's rules around using * unpacking
udt = datetime.now()
ud = DateTime(*udt.timetuple()[:6], kind=DateTimeKind.Utc)
答案 1 :(得分:2)
现在2.7.6 has been released,如果需要,您可以使用clr.Convert
进行显式转换。可能有更好的方法来做到这一点,但我从Jeff Hardy's commit.
>>> from System import DateTime
>>> from datetime import datetime
>>> from clr import Convert
>>> now_py = datetime.now()
>>> now_py
datetime.datetime(2020, 1, 1, 18, 28, 34, 598000)
>>> Convert(now_py, DateTime)
<System.DateTime object at 0x00000000006C [1/1/2020 6:28:34 PM]>
>>> now_py == Convert(now_py, DateTime)
True
DateTime(pydate)
仍然崩溃。
答案 2 :(得分:1)
Jeff's answer获得DateTime
秒。如果要将精度拉伸到毫秒,可以使用以下内容:
def cs_date(date):
return DateTime(*date.timetuple()[:6] + (date.microsecond/1000,))