如何在C#中获取正确的时间戳

时间:2014-01-19 17:03:03

标签: c# timestamp

我想在我的应用程序中获得有效的时间戳,所以我写道:

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

我做错了什么?

6 个答案:

答案 0 :(得分:155)

您的错误是使用new DateTime(),它返回0001年1月1日00:00:00.000而不是当前日期和时间。获取当前日期和时间的正确语法是DateTime.Now,因此请更改此:

String timeStamp = GetTimestamp(new DateTime());

到此:

String timeStamp = GetTimestamp(DateTime.Now);

答案 1 :(得分:21)

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

答案 2 :(得分:6)

var timestamp = DateTime.Now.ToFileTime();

该答案本身并不是“更好”的答案,而是另一种答案,它提供的结果与已提供的结果相似,但不那么冗长。即使不是unix时间,Windows filetime仍可用于区分不同的事务。

答案 3 :(得分:3)

对于 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);

答案 4 :(得分:1)

Int32 unixTimestamp =(Int32)(DateTime.UtcNow.Subtract(new DateTime(1970,1,1)))。TotalSeconds;

DateTime.UtcNow可以替换为您要获取其Unix时间戳的任何DateTime对象。

答案 5 :(得分:0)

internal static string UnixToDate(int Timestamp, string ConvertFormat)
{
    DateTime ConvertedUnixTime = DateTimeOffset.FromUnixTimeSeconds(Timestamp).DateTime;
    return ConvertedUnixTime.ToString(ConvertFormat);
}

int Timestamp = (int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds;

用法:

UnixToDate(1607013172, "HH:mm:ss"); // Output 16:32:52
Timestamp; // Output 1607013172