Cara mendapatkan cap waktu yang benar di C #

146

Saya ingin mendapatkan cap waktu yang valid di aplikasi saya jadi saya menulis:

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

keluaran:

000101010000000000

Saya menginginkan sesuatu seperti:

20140112180244

Apa yang telah saya lakukan salah?

Wojciech Ketrzynski
sumber

Jawaban:

192

Kesalahan Anda menggunakan new DateTime(), yang mengembalikan 1 Januari 0001 pukul 00:00: 00.000 bukan tanggal dan waktu saat ini. Sintaks yang benar untuk mendapatkan tanggal dan waktu saat ini adalah DateTime. Sekarang , ubah ini:

String timeStamp = GetTimestamp(new DateTime());

untuk ini:

String timeStamp = GetTimestamp(DateTime.Now);
ekad
sumber
Apa yang sebaliknya? dari timestamp ke datetime
DanielV
2
@DanielV lihat di sini: Mengubah String menjadi DateTime .
ekad
2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); diekstraksi dari sini
DanielV
44
var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Mohamed.Abdo
sumber
11
Membutuhkan NET 4.6.
jeromej
7
Ini adalah jawaban untuk saya, tetapi saya menggunakanToUnixTimeMilliseconds()
Yass
16
var timestamp = DateTime.Now.ToFileTime();

//output: 132260149842749745

Ini adalah cara alternatif untuk melakukan individuasi transaksi yang berbeda. Ini bukan waktu unix, tetapi windows filetime.

Dari dokumen :

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).
Jeff
sumber
2
Ini akan membantu jika Anda menambahkan beberapa penjelasan mengapa jawaban kode Anda lebih baik daripada yang lain sehingga pengguna lain akan mengerti mengapa menggunakan solusi Anda untuk masalah ini. Kode hanya jawaban tidak begitu membantu tanpa penjelasan.
Brian Tompsett - 汤 莱恩
3
Bantu saya mendapatkan gaya stempel waktu dengan mudah untuk membatalkan cache. +1
Adavo
2
Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

"TIME" adalah objek DateTime yang Anda ingin dapatkan cap waktu unix untuk.

sachin
sumber
1

Untuk UTC :

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

Untuk sistem lokal :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Yousha Aleayoub
sumber