windows Python将字符串(从int64)转换为datetime [duplicate]

wlp8pajw  于 2023-06-30  发布在  Windows
关注(0)|答案(2)|浏览(172)

此问题已在此处有答案

convert 64 bit windows date time in python(2个答案)
4天前关闭。
从LDAP计算机登录时间戳获取此值:lastLogon: 133322323232233542
如何在python中将其转换为datetime?(它看起来像是int64表示的字符串?)
谢谢

d7v8vwbk

d7v8vwbk1#

回答你的问题:
您拥有的时间戳是Windows NT时间格式,它是一个64位值,表示自1601年1月1日(UTC)以来100纳秒间隔的数量。
以下是如何在Python中将其转换为datetime对象:

from datetime import datetime, timedelta

def convert_windows_nt_to_datetime(windows_nt_timestamp):
    # Windows NT epoch start
    epoch_start = datetime(year=1601, month=1, day=1)

    # Convert the timestamp to microseconds
    timestamp_micro = windows_nt_timestamp / 10

    # Create a timedelta object from the microseconds
    delta = timedelta(microseconds=timestamp_micro)

    # Add the timedelta to the epoch start to get the final datetime
    final_datetime = epoch_start + delta

    return final_datetime

# Test the function
windows_nt_timestamp = 133322323232233542
print(convert_windows_nt_to_datetime(windows_nt_timestamp))

这将以您的本地时区打印日期时间。如果你想要UTC格式的日期时间,你可以使用pytz库来转换它:

from pytz import timezone

# Convert the datetime to UTC
final_datetime_utc = final_datetime.astimezone(timezone('UTC'))

print(final_datetime_utc)

希望这对你有用。

cqoc49vn

cqoc49vn2#

它看起来是字符串格式的Unix时间戳。为了在Python中将其转换为datetime对象,可以使用datetime模块。

import datetime

timestamp = int("133322323232233542")
datetime_obj = datetime.datetime.fromtimestamp(timestamp / 10000000 
- 11644473600)

print(datetime_obj)

相关问题