8

「1352101337000」などの長整数に変換されるJavaDateからシリアル番号を取得しました。私が遭遇した問題は、この長い整数をNSDateまたはNSStringに分析して戻し、シリアル番号が何時に表示されているかを明確にできるようにする方法です。

誰かがこの場合の解決策を持っていますか?

4

2 に答える 2

8

これを使って、

NSTimeInterval timeInMiliseconds = [[NSDate date] timeIntervalSince1970];

元に戻すには、

NSDate* date = [NSDate dateWithTimeIntervalSince1970:timeInMiliseconds];

アップルのドキュメントによると、

NSTimeInterval:時間間隔を秒単位で指定するために使用されます。

typedef double NSTimeInterval;

ダブルタイプです。

日付を文字列に変換するには、

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];

//Optionally for time zone converstions
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance];

[formatter release];
于 2012-11-05T08:15:47.817 に答える
3

迅速

この回答はSwift3用に更新されたため、を使用しなくなりましNSDateた。

次の手順を実行して、長整数を日付文字列に変換します。

// convert to seconds
let timeInMilliseconds = 1352101337001
let timeInSeconds = Double(timeInMilliseconds) / 1000

// get the Date
let dateTime = Date(timeIntervalSince1970: timeInSeconds)

// display the date and time
let formatter = DateFormatter()
formatter.timeStyle = .medium
formatter.dateStyle = .long
print(formatter.string(from: dateTime)) // November 5, 2012 at 3:42:17 PM

ノート

  • long1970年以降、Javaの日付はミリ秒単位の整数として格納されるため、これは機能します。ただし、上記の方法を使用して古い整数を日付に変換する前に、この仮定が正しいことを確認してください。時間間隔を秒単位で変換する場合は、もちろん1000で割らないでください。
  • 変換を行って文字列を表示する方法は他にもあります。この詳細な説明を参照してください。
于 2016-06-08T10:54:50.000 に答える