在 Windows 中获取用户日期格式

2023-11-30

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

所以代码看起来像这样:

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

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

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

EDIT:

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

Region Settings window

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


你可以使用[MS.Learn]:GetDateFormatW 函数(datetimeapi.h),它被包裹着[ME.TimGolden]:win32api.GetDateFormat.

Example:

>>> 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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 中获取用户日期格式 的相关文章