【问题标题】:Datetime to milliseconds in c#?c#中的日期时间到毫秒?
【发布时间】:2017-11-09 13:25:16
【问题描述】:

我正在尝试将示例 java 代码转换为 c#。这是 java 代码,我需要一些帮助来找出在 c# 中获取等效代码的正确方法。这是我到目前为止所尝试的。

java代码

TimeZone kenyaTimeZone = TimeZone.getTimeZone("Africa/Kenya");
Calendar calendar = Calendar.getInstance(kenyaTimeZone);
long timestamp = calendar.getTimeInMillis() / 1000; 

C# 代码

TimeZoneInfo tzone = TimeZoneInfo.FindSystemTimeZoneById("Africa /Kenya");
DateTimeOffset dt = new DateTimeOffset(DateTime.UtcNow, tzone.BaseUtcOffset);

这就是我卡住的地方。请帮帮我。我想在几毫秒内得到结果,但我无法找出正确的方法。

【问题讨论】:

  • 怎么了?预期的结果是什么?
  • 你希望结果是什么?
  • @bornfromanegg:= 我想知道我的做法是否正确以及如何将 DateTimeOffset 对象转换为毫秒。
  • 你的意思是从一天开始的毫秒数?
  • @bornfromanegg:- 我不确定这一点,因为我正试图从 java 代码中弄清楚这一点。

标签: java c#


【解决方案1】:

将两个日期时间之间的差异转换为毫秒:

double totalMs = (endDate - startDate).TotalMilliseconds;

【讨论】:

    【解决方案2】:

    也许,这个简短的代码可以帮助你。我读到 java 函数“calendar.getTimeInMillis()”返回自 1970-01-01 以来的毫秒数(如 Unix 时间戳)。

        var dt = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.FindSystemTimeZoneById("E. Africa Standard Time"));
        // Get C# time in milliseconds (since 1900-01-01)
        double milli = new TimeSpan(dt.Ticks).TotalMilliseconds;
    
        // Get Unix timestamp
        double unix = dt.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;
    
        Console.WriteLine("Total Milliseconds: {0}  Unix: {1}", milli, unix);
    

    【讨论】:

      【解决方案3】:

      使用这个:

      decimal miliseconds = myDateTime.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
      

      myDateTime 是一个 DateTime 对象

      祝你好运:)

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多