[ios] NSDate를 유닉스 타임 스탬프 아이폰 SDK로 변환하는 방법?

NSDate을 Unix 타임 스탬프 로 변환하는 방법 ? 나는 반대로하는 많은 게시물을 읽었습니다. 그러나 내 질문과 관련된 것을 찾지 못했습니다.



답변

나는 이것이 당신이 찾고있는 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];


답변

이 방법으로 날짜로부터 유닉스 타임 스탬프 날짜를 만들 수 있습니다.

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 시간으로 변환합니다.


답변

빠른

스위프트 3 업데이트

// current date and time
let someDate = Date()

// time interval since 1970
let myTimeStamp = someDate.timeIntervalSince1970

노트

  • timeIntervalSince1970TimeInterval의 유형 별칭 인을 반환합니다 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;