gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 10:19:41 33 4
gpt4 key购买 nike

我需要将 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com