【问题标题】:Given Date, Get Day of Week - SYSTEMTIME给定日期,获取星期几 - SYSTEMTIME
【发布时间】:2011-03-02 08:35:07
【问题描述】:

如果提供了日期(月-日-年),是否可以使用 SYSTEMTIME 确定星期几,或者这种结构仅单向?

如果SYSTEMTIME不能做到(使用Win32),完成我所问的最轻量级的方法是什么?

【问题讨论】:

    标签: c++ winapi systemtime


    【解决方案1】:

    另一种可能更独立于平台的方法是使用localtime 或gmtime。

    例如,打印当前星期几:

    struct tm *timeval;
    time_t tt;
    tt = time( NULL );
    timeval = localtime( &tt );
    // print zero based day of week
    printf( "day of week = %d\n", timeval->tm_wday );
    

    【讨论】:

      【解决方案2】:

      使用 SystemTimeToFileTime 将 SYSTEMTIME 转换为 FILETIME。然后使用 FileTimeToSystemTime 将其转换为带有星期几的 SYSTEMTIME。

      【讨论】:

        【解决方案3】:

        根据msdn,将SYSTEMTIME 转换为FILETIME 时会忽略wDayOfWeek 成员。转换回来的时候是填的。

        SYSTEMTIME t = { 2010, 6, -1 /*ignored*/, 11 };
        FILETIME ft;
        HRESULT hrto   = SystemTimeToFileTime( &t, &ft );
        HRESULT hrback = FileTimeToSystemTime( &ft, &t );
        
        WORD dayofweek = t.wDayOfWeek;
        

        【讨论】:

          猜你喜欢
          • 2017-11-07
          • 2016-10-19
          • 2017-03-23
          • 1970-01-01
          • 2022-01-21
          • 2021-06-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多