FILETIME

C# Definition:

[StructLayout(LayoutKind.Sequential)]
public struct FILETIME {
    public uint DateTimeLow;
    public uint DateTimeHigh;
}

VB.Net Definition:

<StructLayout(LayoutKind.Sequential)> _
Public Structure FILETIME
   Public dwLowDateTime As UInteger
   Public dwHighDateTime As UInteger

   Public ReadOnly Property Value() As ULong
     Get
       Return CType(dwHighDateTime << 32, ULong) + dwLowDateTime
     End Get
   End Property
End Structure

Sample Code:

public static DateTime FiletimeToDateTime(FILETIME fileTime) {
        long hFT2 = (((long) fileTime.dwHighDateTime) << 32) | ((uint) fileTime.dwLowDateTime);
        return DateTime.FromFileTimeUtc(hFT2);
    }

    public static FILETIME DateTimeToFiletime(DateTime time) {
        FILETIME ft;
        long hFT1 = time.ToFileTimeUtc();
        ft.dwLowDateTime = (int) (hFT1 & 0xFFFFFFFF);
        ft.dwHighDateTime = (int) (hFT1 >> 32);
        return ft;
    }

Sample Code:

Private Shared Function ConvertFileTimeToDateTime(input As FILETIME) As DateTime
    Dim longTime As ULong = (CType(input.dwHighDateTime, ULong) << 32) Or input.dwLowDateTime
    Return DateTime.FromFileTime(longTime)
    End Function

Sample Code:

[StructLayout(LayoutKind.Sequential)]
    struct FILETIME {
        private long timestamp;
        public DateTime Local { 
            get { return DateTime.FromFileTime(this.timestamp); }
            set { this.timestamp = value.ToFileTime(); }
        }
        public DateTime Utc { 
            get { return DateTime.FromFileTimeUtc(this.timestamp); }
            set { this.timestamp = value.ToFileTimeUtc(); }
        }
    }

Última actualización