.NET中的新日期().getTime()
基本上我想在.NET中做下面的工作,但我不知道如何做.NET中的新日期().getTime(),.net,datetime,.net,Datetime,基本上我想在.NET中做下面的工作,但我不知道如何做 var d = new Date().getTime() + " milliseconds since 1970/01/01" 我不确定您是否可以在.NET中获得UNIX日期,但您有DateTime.Now作为new date()或new DateTime()的等价物 正如您在评论中所看到的,可以通过在以下行中执行某些操作来获取TimeSpan对象 (第一个答案) 为了人类的利益添加最终结果 var d = DateTime.Now.Sub
var d = new Date().getTime() + " milliseconds since 1970/01/01"
我不确定您是否可以在.NET中获得UNIX日期,但您有DateTime.Now作为new date()或new DateTime()的等价物 正如您在评论中所看到的,可以通过在以下行中执行某些操作来获取TimeSpan对象 (第一个答案) 为了人类的利益添加最终结果
var d = DateTime.Now.Subtract(new DateTime(1970,1,1).ToUniversalTime()).TotalMilliseconds + " milliseconds since 1970/01/01";
还有,当我们需要乔恩·斯基特的时间知识时,他在哪里呢
var ts = DateTime.UtcNow - new DateTime(1970,1,1);
var result = String.Format("{0} milliseconds since 1970/01/01", ts.TotalMilliseconds);
您可以通过以下方式通过和结构到达:
TimeSpan ts = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1));
ts.TotalMilliseconds; // ...since The Epoch
var ts = DateTime.UtcNow - new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
var result = String.Format("{0} milliseconds since 1970/01/01", ts.TotalMilliseconds);
与其他人相比有点冗长,但它确实有效。不久前我为自己编写了一个扩展方法 它是这样使用的:
double ticks = DateTime.UtcNow.UnixTicks();
实施:
public static class ExtensionMethods
{
// returns the number of milliseconds since Jan 1, 1970
// (useful for converting C# dates to JS dates)
public static double UnixTicks(this DateTime dt)
{
DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = dt.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
return ts.TotalMilliseconds;
}
}
怎么样
var s = string.format("{0} milliseconds since 1970/01/01",
(DateTime.Now - DateTime.Parse("1970/01/01")).TotalMilliseconds);
减法是一种方法,但到目前为止,我看到的所有回答都不能正确地适应UTC 你想要的是:
TimeSpan ts = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1));
ts.TotalMilliseconds; // ...since The Epoch
var ts = DateTime.UtcNow - new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc);
var result = String.Format("{0} milliseconds since 1970/01/01", ts.TotalMilliseconds);
我当时在胡闹,看到了这个例子,但最终修改为:
var st = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToFileTimeUtc();
var t = (DateTime.UtcNow.ToFileTimeUtc());
Debug.WriteLine(t - st);
将给出一个类似16202的数字喜欢约翰双向飞碟的呼救声:DJ要注意的是,你也应该改成UTCThanks!我完全忘记了减法。我找不到TotalMillistics,所以一直使用毫秒。只想注意,您也应该使用UTC时间。因此,10年后,我们仍然使用新的日期时间(1970,1,1)?顺便说一句,与。。。我看到的6个答案,包括您接受的答案,都使用DateTime.Now而不是DateTime.UtcNow。我相信这将导致您的计算错误超过美国半年以上的时间+3600000毫秒。这种差异在您的特定情况下可能并不重要,但需要注意。事实上,在美国当地时间内,无论DST是否处于活动状态,错误将永久性地超过这一点,所有时区都远离GMT/UTC。所以,您是对的,必须使用DateTime.UtcNow。您的示例无法编译。也许您的意思是
double ticks=DateTime.UtcNow.UnixTicks()代码>?应该使用DateTime.UtcNow
或调用dt.ToUniversalTime()
。另外,您有两个多余的构造函数调用。您可能应该使用DateTime.UtcNow
,或者在执行减法之前将时间转换为UTC。为什么要将日期硬编码为字符串?此外,您确实应该使用UTC进行计算。