我有一个C ++ / CX UWP项目,希望用户从我使用Windows.UI.Xaml.Controls创建的CalendarDatePicker中选择一个日期。但是,在初始化时,我希望将CalendarDatePicker选择为一个特定的日期(当前未选择任何日期,而只是说“选择日期”)。 我知道这在C#中很容易实现,而且我很确定C ++也有办法,但是我还没有找到解决方案。
有人对如何做到这一点有想法吗?
答案 0 :(得分:0)
您可以将特定日期传递到 datePicker-> Date 。以下是完整的步骤。 document解释了C ++ / CX中DateTime的相关用法。因此,我们可以通过 SYSTEMTIME-> FILETIME-> _ ULARGE_INTEGER-> DateTime 获取DateTime。首先,我们使用 COleDateTime < / strong>类以解析特定的日期字符串(使用前包括 ATLComTime.h ),然后进行转换。
#include <ATLComTime.h>
//parse date string
COleDateTime coDT;
coDT.ParseDateTime(L"2012-11-10", 0, 0);
//get system time struct
SYSTEMTIME st;
coDT.GetAsSystemTime(st);
//COleDateTime is in local timezone, DateTime is in UTC, so we need to convert
SYSTEMTIME st_utc;
TzSpecificLocalTimeToSystemTime(nullptr, &st, &st_utc);
//get filetime struct to get a time format compatible with DateTime
FILETIME fileTime;
SystemTimeToFileTime(&st_utc, &ft);
//use _ULARGE_INTEGER to get a int64 to set the DateTime struct to
_ULARGE_INTEGER ulint = { fileTime.dwLowDateTime, fileTime.dwHighDateTime };
Windows::Foundation::DateTime myDateTime;
wfdt.UniversalTime = ulint.QuadPart;
//set date
MyDatePicker->Date = myDateTime;
答案 1 :(得分:0)
我终于有更多的时间对此进行调查。
解决此问题的更简单方法是使用以下代码:
Windows::Globalization::Calendar calendar;
Myguidatepicker->Date = calendar.GetDateTime();