21

C# で Unix 時間をすばやく/簡単に解析する方法はありますか? 私はその言語にまったく慣れていないので、これが痛々しいほど明白な質問である場合は、お詫び申し上げます。IE [エポックからの秒数].[ミリ秒] の形式の文字列があります。C# に Java の SimpleDateFormat に相当するものはありますか?

4

9 に答える 9

43

最も簡単な方法は、おそらく次のようなものを使用することです。

private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, 
                                                      DateTimeKind.Utc);

...
public static DateTime UnixTimeToDateTime(string text)
{
    double seconds = double.Parse(text, CultureInfo.InvariantCulture);
    return Epoch.AddSeconds(seconds);
}

次の 3 つの点に注意してください。

  • 文字列が "x,y" ではなく "xy" の形式であることが確実な場合は、上記のように不変カルチャを使用して、"." を確認する必要があります。小数点として解析されます
  • コンストラクターで UTC を指定して、DateTimeそれが現地時間であると認識されないようにする必要があります。
  • .NET 3.5 以降を使用している場合は、.NETDateTimeOffsetの代わりに.NET を使用することを検討してくださいDateTime
于 2009-11-04T14:50:52.473 に答える
6

これは C# のユーザーが行う非常に一般的なことですが、そのためのライブラリはありません。

私はこのミニ ライブラリhttps://gist.github.com/1095252を作成して、私の生活を楽にしました (あなたの生活も楽になることを願っています)。

于 2011-07-20T16:07:36.510 に答える
5
// This is an example of a UNIX timestamp for the date/time 11-04-2005 09:25.
double timestamp = 1113211532;

// First make a System.DateTime equivalent to the UNIX Epoch.
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);

// Add the number of seconds in UNIX timestamp to be converted.
dateTime = dateTime.AddSeconds(timestamp);

// The dateTime now contains the right date/time so to format the string,
// use the standard formatting methods of the DateTime object.
string printDate = dateTime.ToShortDateString() +" "+ dateTime.ToShortTimeString();

// Print the date and time
System.Console.WriteLine(printDate);

ソース: http://www.codeproject.com/KB/cs/timestamp.aspx

于 2009-11-04T14:49:47.173 に答える
4
var date = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc))
               .AddSeconds(
               double.Parse(yourString, CultureInfo.InvariantCulture));
于 2009-11-04T14:50:11.337 に答える
1

MSDN DateTime ドキュメント万歳! TimeSpanも参照してください。

// First make a System.DateTime equivalent to the UNIX Epoch.
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
// Add the number of seconds in UNIX timestamp to be converted.
dateTime = dateTime.AddSeconds(numSeconds);
// Then add the number of milliseconds
dateTime = dateTime.Add(TimeSpan.FromMilliseconds(numMilliseconds));
于 2009-11-04T14:49:21.620 に答える
1

これは、Stefan Henke によるブログ投稿からのものです。

private string conv_Timestamp2Date (int Timestamp)
{
            //  calculate from Unix epoch
            System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
            // add seconds to timestamp
            dateTime = dateTime.AddSeconds(Timestamp);
            string Date = dateTime.ToShortDateString() +", "+ dateTime.ToShortTimeString();

            return Date;
}
于 2009-11-04T14:50:24.160 に答える
0

便利な拡張方法としてはこちら

  public static DateTime UnixTime(this string timestamp)
    {
        var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
        return dateTime.AddSeconds(int.Parse(timestamp));
    }
于 2014-10-10T15:16:56.177 に答える