在 Windows 中获取用户日期格式

luk*_*kas 5 python outlook datetime pywin32

我的问题与此类似,但是,我不想获取 的日期格式locale,而是用户设置的日期格式。原因是我正在使用pywin32api 与 Outlook 通信,特别是按日期过滤邮件。我必须将日期传递给应用程序的格式是用户设置的格式,否则它将无法工作。

所以代码看起来像这样:

inbox = outlook.Session.GetSharedDefaultFolder(user, 6)

mails = inbox.Items.Restrict(
            "[ReceivedTime] > '{}'".format(retrieve_from.strftime(local_date_fmt))
)
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何在不以用户定义的格式传递日期的情况下执行此操作,那也可以解决我的问题。

编辑

我指的是在此窗口的区域设置中设置的短日期格式:

区域设置窗口

所以在这种情况下,local_date_fmt将被设置为%Y-%m-%d.

Cri*_*ati 3

您可以使用[MS.Learn]: GetDateFormatW 函数 (datetimeapi.h),它由[ME.TimGolden]: win32api.GetDateFormat包装。

例子:

>>> import time
>>> import pywintypes as pwts
>>> import win32api as wapi
>>>
>>> DATE_SHORTDATE = 0x00000001
>>> DATE_LONGDATE = 0x00000002
>>>
>>> cur_time = time.time()
>>> cur_time
1567692860.7315922
>>> time.ctime(cur_time)
'Thu Sep  5 17:14:20 2019'
>>>
>>> wapi.GetDateFormat(0, DATE_SHORTDATE, pwts.Time(cur_time))
'2019-09-05'
>>>
>>> wapi.GetDateFormat(0, DATE_LONGDATE, pwts.Time(cur_time))  # Bonus
'Thursday, 5 September, 2019'
Run Code Online (Sandbox Code Playgroud)