web-dev-qa-db-ja.com

Swiftで18桁の現在のタイムスタンプを取得する方法は?

次のような現在のタイムスタンプを取得したい:

636110767775716756​

しかし、私がそうするとき:

NSDate().timeIntervalSince1970

次のような値を返します。

1475491615.71278

希望の形式で現在のタイムスタンプティックにアクセスするにはどうすればよいですか? here: から日付を確認します

18
The Cook

何を探しているようです DateTime.Ticks はC#、つまり0001-01-01から100ナノ秒間隔で測定された時間です。

提供されたリンクのコード Swift:NSDateをc#ティックに変換 は、Swiftに簡単に変換できます:

// Swift 2:
extension NSDate {
    var ticks: UInt64 {
        return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
    }
}

// Swift 3:
extension Date {
    var ticks: UInt64 {
        return UInt64((self.timeIntervalSince1970 + 62_135_596_800) * 10_000_000)
    }
}

例(Swift 3):

let ticks = Date().ticks
print(ticks) // 636110903202288256

または文字列として:

let sticks = String(Date().ticks)
print(sticks)

そして、アレーがいる間、ティックからDateへの逆変換は

// Swift 2:
extension NSDate {
    convenience init(ticks: UInt64) {
        self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
    }
}

// Swift 3:
extension Date {
    init(ticks: UInt64) {
        self.init(timeIntervalSince1970: Double(ticks)/10_000_000 - 62_135_596_800)
    }
}

例(Swift 3):

let date = Date(ticks: 636110903202288256)
23
Martin R

ここに私が非常にエレガントだと思う解決策があります。 NSDateを拡張しました(ただし、現在はSwift 3)にあるDateです)が、toMillis()funcを含めることで、作業中の日付オブジェクトのInt64値を取得できます。

extension Date {
    func toMillis() -> Int64! {
        return Int64(self.timeIntervalSince1970 * 1000)
    }
}

使用法:

let currentTimeStamp = Date().toMillis()

乾杯

15
Hermann Kuschke

In Swift:

グローバル変数として作成する場合は、以下のコードを参照してください:

var Timestamp: String {
   return "\(NSDate().timeIntervalSince1970 * 1000)"
}

その後、あなたはそれを呼び出すことができます

println("Timestamp: \(Timestamp)")

* 1000はミリ秒です。必要に応じて削除できます。 NSTimeIntervalとして保持する場合。

var Timestamp: NSTimeInterval {
    return NSDate().timeIntervalSince1970 * 1000
}

目的C:

シンボリック定数として宣言する場合は、以下のコードを参照してください。

#define TimeStamp [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000]

次に、次のように呼び出します。

NSString * timestamp = TimeStamp;

または、グローバルメソッドを作成します。

- (NSString *) timeStamp {
    return [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];
}

注意: 1000は、タイムスタンプをミリ秒に変換します。秒単位のtimeIntervalを希望する場合は、これを削除できます。

9
vaibhav