我想在我的应用程序中获得有效的时间戳,所以我写道:
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
我做错了什么?
答案 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