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

Woj*_*ski 125 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);
Run Code Online (Sandbox Code Playgroud)

输出:

000101010000000000
Run Code Online (Sandbox Code Playgroud)

我想要的东西:

20140112180244
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

eka*_*kad 171

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

String timeStamp = GetTimestamp(new DateTime());
Run Code Online (Sandbox Code Playgroud)

对此:

String timeStamp = GetTimestamp(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

  • @DanielV见这里:[将字符串转换为DateTime](/sf/ask/64347111/). (2认同)
  • `双时间戳 = 1498122000; DateTime fecha = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc).AddSeconds(timestamp);` 摘自[这里](/sf/answers/17528031/ /1257607) (2认同)

Moh*_*bdo 30

var Timestamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Run Code Online (Sandbox Code Playgroud)

  • 需要NET 4.6. (8认同)
  • 静态方式 `DateTimeOffset.Now.ToUnixTimeSeconds()` 怎么样? (5认同)
  • 这就是我的答案,但是我使用了`ToUnixTimeMilliseconds()`。 (4认同)

Jef*_* Li 8

var timestamp = DateTime.Now.ToFileTime();
Run Code Online (Sandbox Code Playgroud)

这个答案本身并不"更好",但它是一个替代答案,提供类似于已经提供的结果,同时不那么冗长.即使它不是unix时间,windows filetime仍可用于个别化不同的事务.

  • 帮助我轻松获得时间戳样式以使缓存无效。+1 (5认同)
  • 如果您添加一些解释,为什么您的代码答案比其他答案更好,这将有所帮助,以便其他用户将理解为什么使用您解决此问题.如果没有解释,仅代码答案就没那么有用了. (2认同)

You*_*oub 6

对于UTC

string unixTimestamp = Convert.ToString((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Run Code Online (Sandbox Code Playgroud)

对于本地系统

string unixTimestamp = Convert.ToString((int)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds);
Run Code Online (Sandbox Code Playgroud)


小智 5

Int32 unixTimestamp = (Int32)(TIME.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
Run Code Online (Sandbox Code Playgroud)

“TIME”是您想要获取其 Unix 时间戳的 DateTime 对象。