NSDate를 unix timestamp iphone sdk로 변환하는 방법은 무엇입니까?
변환 방법NSDate
Unix 타임스탬프로?저는 반대로 하는 게시물을 많이 읽었습니다.하지만 저는 제 질문과 관련된 어떤 것도 찾지 못하고 있습니다.
당신이 찾고 있는 NSDate의 선택기는 다음과 같습니다.
- (NSTimeInterval)timeIntervalSince1970
Unix 타임스탬프는 1970년 1월 1일 00:00:00 UTC 이후의 초 수입니다.time_t 유형으로 표시되며, 일반적으로 부호 있는 32비트 정수 유형(long 또는 int)입니다.
iOS는 -(NSTime)을 제공합니다.간격)시간1970년 1월 1일 00:00:00 GMT 이후의 초 수를 반환하는 NSDate 개체의 IntervalSince1970.NSTimeInterval은 이중 부동 소수점 유형이므로 초와 분율을 얻을 수 있습니다.
둘 다 참조가 같고(1970년 1월 1일 자정 UTC) 초 단위로 변환하기 쉬우므로 NST 시간을 변환합니다.time_t 간격, 필요에 따라 반올림 또는 잘라내기:
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970];
다음과 같은 방법으로 날짜부터 유닉스 타임스탬프 날짜를 생성할 수 있습니다.
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
의 유형 별칭인 반환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];
}
제가 선호하는 방법은 간단하게 다음과 같습니다.
NSDate.date.timeIntervalSince1970;
아래와 같이 UNIX 시간 함수를 사용한 @kexik의 제안에 따라:
time_t result = time(NULL);
NSLog([NSString stringWithFormat:@"The current Unix epoch time is %d",(int)result]);
.내 경험에 따르면 - 시간을 사용하지 마.Interval1970년 이후, 그것은 당신이 GMT보다 늦은 시간(초)의 에포크 타임스탬프를 제공합니다.
이전에 NSDate 날짜 시간에 대한 버그가 있었습니다.IntervalSince1970], 예전에는 전화기의 시간대를 기준으로 시간을 추가/감산하는 방식이었지만, 지금은 해결된 것 같습니다.
[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
문자열로 타임스탬프가 필요한 경우.
time_t result = time(NULL);
NSString *timeStampString = [@(result) stringValue];
언급URL : https://stackoverflow.com/questions/2997062/how-to-convert-nsdate-into-unix-timestamp-iphone-sdk
'programing' 카테고리의 다른 글
콘솔의 같은 위치에 출력을 쓰려면 어떻게 해야 합니까? (0) | 2023.06.04 |
---|---|
Firebase - ref와 child의 차이점은 무엇입니까? (0) | 2023.06.04 |
작은 첨자를 가진 요소를 포함하여 모든 중복 행 찾기 (0) | 2023.06.04 |
Python에서 객체의 속성을 열거하는 방법은 무엇입니까? (0) | 2023.06.04 |
특정 문자열을 포함하는 행 필터링 (0) | 2023.06.04 |