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

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

我做错了什么?


您的错误在于使用了new DateTime(),它返回1月1日0001的00:00:00.000,而不是当前的日期和时间。获取当前日期和时间的正确语法是DateTime。现在,改变这个:

String timeStamp = GetTimestamp(new DateTime());

:

String timeStamp = GetTimestamp(DateTime.Now);

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

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).

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

"TIME"是你想获取unix时间戳的DateTime对象。


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

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