1. ホーム
  2. cocoa

[解決済み] 現在のNSDateをタイムスタンプ形式で取得します。

2023-06-23 14:49:03

質問

現在時刻を取得し、それを文字列に設定する基本的なメソッドを持っています。しかし、どのように私はそれがUNIX since-1970タイムスタンプ形式で現在の日付とamp;時間をフォーマットするために取得することができますか?

以下は私のコードです。

NSDate *currentTime = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh-mm"];
NSString *resultString = [dateFormatter stringFromDate: currentTime];

を使用することは可能でしょうか? NSDateFormatter を使って、'resultString' をタイムスタンプに変更することは可能でしょうか?

どのように解決するのですか?

私が使っているのはこんな感じです。

NSString * timestamp = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970] * 1000];

(ミリ秒の場合は1000倍、そうでない場合は取り除いてください)

いつも使っているのであれば、マクロを宣言しておくといいかもしれません。

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

では、このように呼び出します。

NSString * timestamp = TimeStamp;

あるいはメソッドとして

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

TimeIntervalとして

- (NSTimeInterval) timeStamp {
    return [[NSDate date] timeIntervalSince1970] * 1000;
}

note:

1000は、タイムスタンプをミリ秒に変換するためのものです。 もし、timeIntervalを秒単位で使用したい場合は、これを削除することができます。

Swift

Swiftでグローバル変数が欲しいなら、これを使えばいいのでは?

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

次に、それを

println("Timestamp: \(Timestamp)")

ここでも *1000 はミリ秒のためのもので、もし必要ならこれを削除してもかまいません。 もし、このまま NSTimeInterval

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

これらは、どのクラスの文脈の外でも宣言することで、どこからでもアクセスできるようになります。