Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET中的新日期().getTime()_.net_Datetime - Fatal编程技术网

.NET中的新日期().getTime()

.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

基本上我想在.NET中做下面的工作,但我不知道如何做

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进行计算。