Source/Tx.Windows/TimeUtil.cs (28 lines of code) (raw):

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System; namespace Tx.Windows { public sealed class TimeUtil { // DateTimeKind option needed for overriding DateTimeKind if parsing // performance counter blg from different timezone than creation time zone public static DateTimeKind DateTimeKind {get; set;} = DateTimeKind.Local; private const Int64 TicksPerMillisecond = 10000; private const Int64 TicksPerSecond = TicksPerMillisecond * 1000; private const Int64 TicksPerMinute = TicksPerSecond * 60; private const Int64 TicksPerHour = TicksPerMinute * 60; private const Int64 TicksPerDay = TicksPerHour * 24; // Number of days in a non-leap year private const int DaysPerYear = 365; // Number of days in 4 years const int DaysPer4Years = DaysPerYear * 4 + 1; // Number of days in 100 years private const int DaysPer100Years = DaysPer4Years * 25 - 1; // Number of days in 400 years private const int DaysPer400Years = DaysPer100Years * 4 + 1; // Number of days from 1/1/0001 to 12/31/1600 private const int DaysTo1601 = DaysPer400Years * 4; private const Int64 FileTimeOffset = DaysTo1601 * TicksPerDay; public static DateTimeOffset DateTimeOffsetFromFileTime(Int64 fileTime) { return new DateTimeOffset(FileTimeOffset + fileTime, TimeSpan.Zero); } public static DateTime FromFileTime(Int64 fileTime) { return new DateTime(FileTimeOffset + fileTime, DateTimeKind); } } }