C#で正しいタイムスタンプを取得する方法


146

アプリケーションで有効なタイムスタンプを取得したいので、次のように記述しました。

public static String GetTimestamp(DateTime value)
{
    return value.ToString("yyyyMMddHHmmssffff");
}
//  ...later on in the code
String timeStamp = GetTimestamp(new DateTime());
Console.WriteLine(timeStamp);

出力:

000101010000000000

私は次のようなものが欲しかった:

20140112180244

何が悪いのでしょうか?

回答:


192

あなたの間違いはnew DateTime()、現在の日付と時刻の代わりに00:00:00.000に0001年1月1日を返すを使用しています。現在の日付と時刻を取得するための正しい構文はDateTime.Nowなので、これを変更します。

String timeStamp = GetTimestamp(new DateTime());

これに:

String timeStamp = GetTimestamp(DateTime.Now);

逆は何ですか?タイムスタンプから日時まで
DanielV 2017年

2
@DanielVこちらをご覧ください:文字列をDateTimeに変換
ekad 2017年

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp);ここ
DanielV 2017年

44
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();

11
NET 4.6が必要です。
jeromej 2018年

7
これが私の答えでしたが、私は使用しましたToUnixTimeMilliseconds()
Yass

15
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

これは、個別のトランザクションを個別化する別の方法です。UNIX時間ではなく、Windowsファイル時間です。

ドキュメントから:

A Windows file time is a 64-bit value that represents the number of 100- 
nanosecond intervals that have elapsed since 12:00 midnight, January 1, 1601 
A.D. (C.E.) Coordinated Universal Time (UTC).

2
他のユーザーがこの問題の解決策を使用する理由を理解できるように、コードの回答が他のコードの回答よりも優れている理由について説明を追加すると役立ちます。コードのみの回答は、説明なしではそれほど役に立ちません。
ブライアントンプセット-汤莱恩

3
キャッシュを無効にするタイムスタンプスタイルを簡単に取得するのに役立ちます。+1
Adavo

2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

「TIME」は、UNIXタイムスタンプを取得するDateTimeオブジェクトです。


0

以下のためのUTC

string unixTimestamp = Convert.ToString((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);

ローカルシステムの場合

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.