请教大家一个问题:
我调用一个函数getmoviecreationtime(),想取一个movie的创建时间, 它的返回值是从1904/1/1 0:0:1到movie创建时间的秒的总长度,我想根据这个秒的总长度算出个日期,请问如何转换.
可能需要一个万年历的算法吧?
或者有没有转门的这个函数,即输入一个参数(秒的长度)和一个basedate(1904/1/1 0:0:1), 返回一个日期?
大侠们有没有好的办法?或者代码?
谢谢...

解决方案 »

  1.   

    使用time_t 看看他的msdn让你有收获解决问题!
      

  2.   

    time_t 是从1970年以后的日期算起的。我的这个函数是从1904/1/1 0:0:1 算起的谢谢。。有没有其它办法?
      

  3.   

    CTime t( 1904, 1, 1, 0, 0, 1 ); 
    long tm = ***;
    CTimeSpan ts(tm);
    t += ts;
    然后用CTime类的Get函数就可以得到年月日了。或者用Format函数获取日期字符串。
    你所说的以秒为单位的时间,就是time_t类型的。
      

  4.   

    http://support.microsoft.com/default.aspx?scid=kb;en-us;167296
      

  5.   

    大侠们,CTime 的年限也是从1970 年开始的, 我的这个是从1904年开始的啊有没有关于日历的算法???谢谢了。。
      

  6.   

    happyparrot(快乐鹦鹉)已经讲得很清楚了,
    楼主怎么还没转过弯来?
      

  7.   

    就是啊。你管他CTime从哪里开始的干啥,我已经设定CTime的初值为1904年了。然后加上时间差,不就对了嘛。和CTime从哪年开始有什么关系?
      

  8.   

    我test了,不行的,因为CTime的year的范围是1970-3000年,所以初值为1904,会出错的。
    好像msdn上的一些日期函数大多数是从1970年开始的...
      

  9.   

    按照 happyparrot的方法,只不过需将秒数(int类型)化为天数(double类型),
    用COleDateTime和COleDateTimeSpan,用法与CTime和CTimeSpan类似;或者
    COleDateTime time1=COleDateTime(time_t& integer);
    COleDateTime time2=COleDateTime(1970,1,1,0,0,0);
    COleDateTime time3=COleDateTime(1904,1,1,0,0,1);
    COleDateTime time4 =time1+(time2-time3);
      

  10.   

    LONG llSecondSpan = 9999999;
    COleDateTime dt(1904,1,1,0,0,0);
    COleDateTimeSpan dtSpan(0,0,0,llSecondSpan); dt += dtSpan;
    CString sz = dt.Format("%Y-%m-%d  %H:%M:%S");
    m_sz = sz;
    UpdateData(FALSE);