วิธีรับการประทับเวลาที่ถูกต้องใน 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()ซึ่งจะส่งคืนวันที่ 1 มกราคม 0001 เวลา 00: 00: 00.000 แทนที่จะเป็นวันที่และเวลาปัจจุบัน ไวยากรณ์ที่ถูกต้องที่จะได้รับวันที่และเวลาปัจจุบันคือDateTime ตอนนี้ให้เปลี่ยนสิ่งนี้:

String timeStamp = GetTimestamp(new DateTime());

สำหรับสิ่งนี้:

String timeStamp = GetTimestamp(DateTime.Now);

มีวิธีอื่นอีกไหม? จากการประทับเวลาถึงวันที่และเวลา
DanielV

2
@DanielV ดูที่นี่: แปลง String เพื่อ DateTime
ekad

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); สกัดจากที่นี่
DanielV


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

//output: 132260149842749745

นี่เป็นอีกทางเลือกหนึ่งในการแยกแยะการทำธุรกรรมที่แตกต่าง มันไม่ใช่เวลา unix แต่ windows filetime

จากเอกสาร :

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
มันจะช่วยถ้าคุณเพิ่มคำอธิบายว่าทำไมคำตอบรหัสของคุณดีกว่าคำตอบอื่น ๆ เพื่อให้ผู้ใช้อื่น ๆ จะเข้าใจว่าทำไมต้องใช้คุณแก้ปัญหานี้ รหัสคำตอบเท่านั้นจะไม่เป็นประโยชน์โดยไม่มีคำอธิบาย
Brian Tompsett - 汤莱恩

3
ช่วยให้ฉันหาสไตล์การประทับเวลาได้อย่างง่ายดายเพื่อทำให้แคชใช้ไม่ได้ +1
Adavo

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

"TIME" เป็นวัตถุ DateTime ที่คุณต้องการรับการประทับเวลา unix


1

สำหรับ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.