2

C# で DateTime を Swatch インターネット時刻に変換する方法を探していました。何も見つかりませんでした。DateTime をビートに変換するにはどうすればよいですか?

編集:解決策が見つかりました。すぐに回答として投稿します:

var time = DateTime.Now;  //get the current time
var utc1 = time.ToUniversalTime().AddHours(1); //convert the given DateTime to universal time and add one hour (internet time is based on UTC+1)
var beats = utc1.TimeOfDay.TotalMilliseconds / 86400d; //get the milliseconds of the given day and divide it to the number of seconds of a day

一行で:

var beats = DateTime.Now.ToUniversalTime().AddHours(1).TimeOfDay.TotalMilliseconds / 86400d

DateTime 拡張として:

public static class DateTimeExtensions
{
    public static double ToInternetTimeDouble(this DateTime time)
    {
        return time.ToUniversalTime().AddHours(1).TimeOfDay.TotalMilliseconds / 86400d;
    }

    public static int ToInternetTimeInt(this DateTime time)
    {
        return Convert.ToInt32(Math.Floor(time.ToInternetTimeDouble()));
    }

    public static string ToInternetTimeStr(this DateTime time)
    {
        return time.ToInternetTimeStr(false);
    }

    public static string ToInternetTimeStr(this DateTime time, bool decimals)
    {
        return string.Format(CultureInfo.InvariantCulture, "@{0}", decimals ? string.Format(CultureInfo.InvariantCulture, "{0:0.00}", time.ToInternetTimeDouble()) : time.ToInternetTimeInt().ToString(CultureInfo.InvariantCulture));
    }
}
4

0 に答える 0