NSDateをC#ティックに変換する必要があります。Swift:NSDateをC#ティックに変換する
DateTime.ticksは、私はそれを行うことができますどのように0001
1月1日から始まるティックに日付を変換しますか? ありがとうございます。
NSDateをC#ティックに変換する必要があります。Swift:NSDateをC#ティックに変換する
DateTime.ticksは、私はそれを行うことができますどのように0001
1月1日から始まるティックに日付を変換しますか? ありがとうございます。
私はこのコードをどこかで借りたので、私は著者ではありません。ので、ここで、
@implementation NSDate (Ticks)
- (long long) ticks
{
double tickFactor = 10000000;
long long tickValue = (long long)floor([self timeIntervalSince1970] * tickFactor) + 621355968000000000LL;
return tickValue;
}
+ (NSDate*) dateWithTicks:(long long)ticks
{
double tickFactor = 10000000;
double seconds = (ticks - 621355968000000000LL)/tickFactor;
return [NSDate dateWithTimeIntervalSince1970:seconds];
}
@end
OPはスウィフトと彼の質問をタグ付けニコライが掲載しているとして、それは基本的に同じであるが、代替の答えだ:ここにそれが行きます。ただし、このバージョンでは、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
}
'timeIntervalSinceReferenceDate'は、1月1日、2001年の日付オブジェクトと00:00:00の間の間隔を返します(読み取り専用) – zcui93
あなたの質問は_really_ vaugeと不明です。 **もっと**具体的になりますか? [mcve]はいいです.. –