回答:
これはあなたが探しているNSDateのセレクターだと思います:
- (NSTimeInterval)timeIntervalSince1970
A Unixタイムスタンプは、これは、型によって表されます00:00:00 1970年1月1日からの秒数でのtime_t通常の符号付き32ビット整数型(longまたはINT)です。
iOSは、NSDateオブジェクトに-(NSTimeInterval)timeIntervalSince1970を提供しており、1970年1月1日00:00:00 GMT以降の秒数を返します。NSTimeIntervalは、倍精度浮動小数点型なので、秒と秒の小数部を取得できます。
どちらも同じ参照(真夜中1Jan1970 UTC)であり、どちらも秒単位で簡単に変換できるため、NSTimeIntervalをtime_tに変換し、必要に応じて丸めたり切り捨てたりします。
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970];
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
piece.piece.last_viewはNSDateです
次の方法で、日付からUNIXタイムスタンプ日付を作成できます。
NSTimeInterval timestamp = [[NSDate date] timeIntervalSince1970];
- (void)GetCurrentTimeStamp
{
NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
[objDateformat setDateFormat:@"yyyy-MM-dd"];
NSString *strTime = [objDateformat stringFromDate:[NSDate date]];
NSString *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter.
NSDate *objUTCDate = [objDateformat dateFromString:strUTCTime];
long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);
NSString *strTimeStamp = [Nsstring stringwithformat:@"%lld",milliseconds];
NSLog(@"The Timestamp is = %@",strTimestamp);
}
- (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *objDate = [dateFormatter dateFromString:IN_strLocalTime];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSString *strDateTime = [dateFormatter stringFromDate:objDate];
return strDateTime;
}
注:-タイムスタンプはUTCゾーンにある必要があるため、ローカル時間をUTC時間に変換します。
Swift 3用に更新
// current date and time
let someDate = Date()
// time interval since 1970
let myTimeStamp = someDate.timeIntervalSince1970
ノート
timeIntervalSince1970
TimeInterval
は、のタイプエイリアスであるを返しますDouble
。
別の方法で移動したい場合は、次の操作を実行できます。
let myDate = Date(timeIntervalSince1970: myTimeStamp)
これらの時間をデータベースに保存したり、サーバーに送信したりする場合は、Unixタイムスタンプを使用するのが最適です。これを取得するための小さなスニペットを次に示します。
+ (NSTimeInterval)getUTCFormateDate{
NSDateComponents *comps = [[NSCalendar currentCalendar]
components:NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit
fromDate:[NSDate date]];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:[[NSTimeZone systemTimeZone] secondsFromGMT]];
return [[[NSCalendar currentCalendar] dateFromComponents:comps] timeIntervalSince1970];
}
[[NSTimeZone systemTimeZone] secondsFromGMT]]
か: ?少し説明してください。
@kexikの提案に従って、以下のUNIX時間関数を使用します。
time_t result = time(NULL);
NSLog([NSString stringWithFormat:@"The current Unix epoch time is %d",(int)result]);
。私の経験によると-timeIntervalSince1970を使用しないでください。エポックタイムスタンプ-GMTより遅れている秒数を提供します。
[[NSDate date] timeIntervalSince1970]には以前からバグがあり、電話のタイムゾーンに基づいて時間を加算または減算していたが、現在は解決されているようだ。
[NSString stringWithFormat: @"first unixtime is %ld",message,(long)[[NSDate date] timeIntervalSince1970]];
[NSString stringWithFormat: @"second unixtime is %ld",message,[[NSDate date] timeIntervalSince1970]];
[NSString stringWithFormat: @"third unixtime is %.0f",message,[[NSDate date] timeIntervalSince1970]];
最初のUNIX時間1532278070
2番目のunixtime 1532278070.461380
3番目のUNIX時間1532278070