我有一个以SYSTEMTIME表示的时间值,我想从中减去1小时,并获取新获得的SYSTEMTIME。我希望转换应考虑加减法的日期更改或月份更改或e1年更改。

如果有一些Windows API在SYSTEMTIME上进行算术运算,有人可以帮我吗

最佳答案

如果您使用的是C#(或VB.NET或ASP.NET),则可以使用

DateTime dt = DateTime.Now.AddHours(1);

您可以使用负数减去:
DateTime dt = DateTime.Now.AddHours(-1);

编辑:
我从this post中提取一个请求


SYSTEMTIME add( SYSTEMTIME s, double seconds ) {

    FILETIME f;
    SystemTimeToFileTime( &s, &f );

    ULARGE_INTEGER u  ;
    memcpy( &u  , &f , sizeof( u ) );

    const double c_dSecondsPer100nsInterval = 100. * 1.E-9;
    u.QuadPart += seconds / c_dSecondsPer100nsInterval;

    memcpy( &f, &u, sizeof( f ) );

    FileTimeToSystemTime( &f, &s );
    return s;
 }

如果要增加一个小时,请使用SYSTEMTIME s2 = add(s1, 60*60)

10-07 12:50