Yanıtlar:
Bu, aradığınız NSDate'in seçici olduğuna inanıyorum:
- (NSTimeInterval)timeIntervalSince1970
Bir Unix zaman damgasını 1 Ocak 1970. 00:00:00 UTC beri saniye sayısıdır Bu tip ile temsil ediyor time_t bir işaretli 32 bit tamsayı tipi (uzun ya da int) olup.
iOS sağlar - (NSTimeInterval) timeIntervalSince1970 1 Ocak 1970 00:00:00 GMT'den beri saniye sayısını döndüren NSDate nesneleri için . NSTimeInterval, saniyenin saniye ve kesirlerini elde etmek için çift kayan nokta türüdür.
Her ikisi de aynı referansa (gece yarısı 1 Ocak 1970 UTC) sahip olduğundan ve her ikisi de saniyeler içinde dönüşüm kolay olduğundan, NSTimeInterval'ı ihtiyaçlarınıza göre bir time_t, yuvarlama veya kesme işlemine dönüştürün:
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970];
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
burada piece.piece.last_view bir NSDate
Bir tarihten bir unix zaman damgası tarihi şu şekilde oluşturabilirsiniz:
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;
}
NOT: - Zaman Damgası UTC Bölgesinde olmalıdır, bu yüzden yerel Saatimizi UTC Saatine dönüştürüyorum.
Swift 3 için güncellendi
// current date and time
let someDate = Date()
// time interval since 1970
let myTimeStamp = someDate.timeIntervalSince1970
notlar
timeIntervalSince1970
TimeInterval
için bir typealias olan döner Double
.
Başka bir yoldan gitmek istiyorsan aşağıdakileri yapabilirsin:
let myDate = Date(timeIntervalSince1970: myTimeStamp)
Bu zamanı bir veritabanında saklamak veya sunucu üzerinden göndermek istiyorsanız ... en iyisi Unix zaman damgalarını kullanmaktır. İşte bunu elde etmek için küçük bir pasaj:
+ (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]]
? Lütfen biraz açıklayınız.
UNIX zaman işlevini kullanarak @ kexik'in önerisine göre aşağıdaki gibi:
time_t result = time(NULL);
NSLog([NSString stringWithFormat:@"The current Unix epoch time is %d",(int)result]);
Deneyimlerime göre - timeIntervalSince1970 kullanmayın, dönem zaman damgası verir - GMT'nin arkasında olduğunuz saniye sayısı.
Eskiden [[NSDate date] timeIntervalSince1970] ile ilgili bir hata vardı, telefonun saat dilimine göre zaman ekliyor / çıkarıyordu, ancak şimdi çözülmüş gibi görünüyor.
[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]];
ilk unixtime 1532278070
ikinci unixtime 1532278070.461380
üçüncü unixtime 1532278070