「1352101337000」などの長整数に変換されるJavaDateからシリアル番号を取得しました。私が遭遇した問題は、この長い整数をNSDateまたはNSStringに分析して戻し、シリアル番号が何時に表示されているかを明確にできるようにする方法です。
誰かがこの場合の解決策を持っていますか?
「1352101337000」などの長整数に変換されるJavaDateからシリアル番号を取得しました。私が遭遇した問題は、この長い整数をNSDateまたはNSStringに分析して戻し、シリアル番号が何時に表示されているかを明確にできるようにする方法です。
誰かがこの場合の解決策を持っていますか?
これを使って、
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];
この回答は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
long
1970年以降、Javaの日付はミリ秒単位の整数として格納されるため、これは機能します。ただし、上記の方法を使用して古い整数を日付に変換する前に、この仮定が正しいことを確認してください。時間間隔を秒単位で変換する場合は、もちろん1000で割らないでください。