5940


下記のよなPGで現在時間の総経過時間を秒単位で計算しています。  
アプリケーションは32bitで作成して64bitマシンで動かしています。  
Windows7 64bit 環境では正しく計算されますが、  
Windows Server 2008 R2 SP1 64bit環境では -1を返してしまします。  
なにか問題なのかさっぱりわからなくて困っています。

[code]

    INT64 CDummyPG::totalsec(int iyear, int imonth, int iday, int ihour, int imin, int isec)
    {
        INT64   nSecond = 0;
        time_t  timeSecond = 0;
        tm      tmTmp;
    
        //year
        tmTmp.tm_year = iyear - _BEGIN_YEAR; // 1900 年以降の時間を計算
        //month
        tmTmp.tm_mon = imonth - 1;
        //day
        tmTmp.tm_mday = iday;
        //hour
        tmTmp.tm_hour = ihour;
        //minute
        tmTmp.tm_min = imin;
        //Second
        tmTmp.tm_sec = isec;
    
        timeSecond = mktime(const_cast<tm *>(&tmTmp));
    
        return INT64(timeSecond);
    }
    
[/code]

time.inlプレビュー

[code]

    static __inline time_t __CRTDECL mktime(struct tm * _Tm)
    {
        return _mktime64(_Tm);
    }
    
[/code]

よろしくお願いします。


CC BY-SA 3.0
2015-02-04T08:34:14.003
5938
2015-02-04T08:51:57.970
2015-02-04T08:51:57.970
4236
7642
question
windows c
mktime がWindows Server 2008 R2 SP1 で　-1 を返す


tm_isdstが初期化されていません。[MSDNのmktimeの説明](https://msdn.microsoft.com/ja-
jp/library/d1y53h2a.aspx)によると

> tm_isdst は必須フィールドです。 設定しないと、その値は未定義になり、これらの関数からは予想外の値が返されます。

と書かれています。


CC BY-SA 3.0
2015-02-04T08:45:14.403
5940
2015-02-04T08:45:14.403
4236
5938
answer