답변:
나는 이것이 당신이 찾고있는 NSDate의 선택기라고 생각합니다.
- (NSTimeInterval)timeIntervalSince1970
ㅏ 유닉스 타임 스탬프는 1970 년 1 월 1 일 0시 0 분 0 초 (UTC)부터 (초)입니다 그것은 형식으로 표시 것 time_t 일반적으로 부호있는 32 비트 정수 타입 (긴 또는 INT)이다.
iOS는 1970 년 1 월 1 일 00:00:00 GMT 이후의 초 수를 반환하는 NSDate 객체에 대해 -(NSTimeInterval) timeIntervalSince1970 을 제공합니다 . 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이다
- (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 시간으로 변환합니다.
스위프트 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]]
무엇입니까? 조금만 설명해주세요.
다음과 같이 UNIX 시간 함수를 사용하는 @ kexik의 제안에 따라 :
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]];
최초 유닉스 타임 1532278070
두 번째 유닉스 타임 1532278070.461380
세 번째 유닉스 타임 1532278070