Cách lấy dấu thời gian chính xác trong C #


146

Tôi muốn nhận được dấu thời gian hợp lệ trong ứng dụng của mình vì vậy tôi đã viết:

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

đầu ra:

000101010000000000

Tôi muốn một cái gì đó như:

20140112180244

Tôi đã làm gì sai?

Câu trả lời:


192

Lỗi của bạn đang sử dụng new DateTime(), trả về ngày 1 tháng 1 năm 0001 lúc 00: 00: 00.000 thay vì ngày giờ hiện tại. Cú pháp chính xác để có được ngày và giờ hiện tại là DateTime. Bây giờ , vì vậy hãy thay đổi điều này:

String timeStamp = GetTimestamp(new DateTime());

đến đây:

String timeStamp = GetTimestamp(DateTime.Now);

Cách khác là gì? từ dấu thời gian đến thời gian
DanielV

2
@DanielV xem tại đây: Chuyển đổi một chuỗi thành DateTime .
ekad

2
double timestamp = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp); trích xuất từ đây
DanielV

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

11
Yêu cầu NET 4.6.
jeromej

7
Đây là câu trả lời cho tôi, nhưng tôi đã sử dụngToUnixTimeMilliseconds()
Yass

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

//output: 132260149842749745

Đây là một cách khác để phân chia các giao dịch riêng biệt. Đó không phải là thời gian unix, mà là cửa sổ thời gian.

Từ các tài liệu :

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
Sẽ hữu ích nếu bạn thêm một số giải thích về lý do tại sao câu trả lời mã của bạn tốt hơn những câu hỏi khác để người dùng khác hiểu lý do tại sao sử dụng giải pháp cho bạn cho vấn đề này. Mã chỉ trả lời là không hữu ích mà không có lời giải thích.
Brian Tompsett - 汤

3
Giúp tôi dễ dàng có được kiểu dấu thời gian để vô hiệu hóa bộ đệm. +1
Adavo

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

"TIME" là đối tượng DateTime mà bạn muốn lấy dấu thời gian unix cho.


0

Đối với UTC :

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

Đối với hệ thống địa phương :

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.