c# - Swift:将 NSDate 转换为 C# ticks

标签 c# ios xcode swift datetime

我需要将 NSDate 转换为 C# ticks。

DateTime.ticks 将日期转换为从 0001 年 1 月 1 日开始的刻度。

我该怎么做? 提前致谢。

最佳答案

OP 用 Swift 标记了他的问题,所以这里有一个替代答案,尽管它与 Nikolay 发布的基本相同。但是,此版本增加了对 DateTime.MinValue 和 DateTime.MaxValue 与 Date.distantPast 和 Date.distantFuture 的映射支持。

   private static let CTicksAt1970 : Int64 = 621_355_968_000_000_000
   private static let CTicksPerSecond : Double = 10_000_000

   private static let CTicksMinValue : Int64 = 0
   private static let CTicksMaxValue : Int64 = 3_155_378_975_999_999_999


       // Method to create a Swift Date struct to reflect the instant in time specified by a "ticks" 
       // value, as used in .Net DateTime structs.
       internal static func swiftDateFromDotNetTicks(_ dotNetTicks : Int64) -> Date {

          if dotNetTicks == CTicksMinValue {
             return Date.distantPast
          }

          if dotNetTicks == CTicksMaxValue {
             return Date.distantFuture
          }

          let dateSeconds = Double(dotNetTicks - CTicksAt1970) / CTicksPerSecond
          return Date(timeIntervalSince1970: dateSeconds)
       }


       // Method to "convert" a Swift Date struct to the corresponding "ticks" value, as used in .Net 
       // DateTime structs.
       internal static func dotNetTicksFromSwiftDate(_ swiftDate : Date) -> Int64 {

          if swiftDate == Date.distantPast {
             return CTicksMinValue
          }

          if swiftDate == Date.distantFuture {
             return CTicksMaxValue
          }

          let dateSeconds = Double(swiftDate.timeIntervalSince1970)
          let ticksSince1970 = Int64(round(dateSeconds * CTicksPerSecond))
          return CTicksAt1970 + ticksSince1970
       }

关于c# - Swift:将 NSDate 转换为 C# ticks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36620342/

相关文章:

c# - OneWayToSource 绑定(bind)重置目标值

c# - 一起使用 InProc 和 Azure AppFabric 缓存

ios - 当 iOS 中的 NSMutableArray 没有对象时应用程序崩溃

ios - xcodebuild 返回代码签名错误

ios - detailTextLabel 未显示,但已设置 100%

c# - 框架 4 和框架 4 客户端配置文件 : What is the difference?

c# - 是否可以将数据绑定(bind)到 Silverlight 中的方法?

iphone - iPhone 4分辨率

ios - 从 AppDelegate 获取数据到 iOS 中的 ViewController

ios - 迪尔德 : Symbol not found: Xcode 11 crash