2017-03-01 6 views
0

방금 ​​Swift 3.0 Calendar 메서드 startOfDay를 사용하기 시작했습니다. 대부분 큰 효과가 있지만 때로는 반환 된 날짜의 오전 3시를 반환합니다. 나는 다음과 같은 방법을 사용하여 유닉스 스타일의 문자열로 변환하고 웹 서비스에서 productionDate을 얻고있다Swift 3.0 - Calendar startOfDay 메서드가 3am을 반환합니다.

static let dateFormatString = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" 

static func dateForDateString(dateString: String) -> Date? 
{ 
    let formatter = DateFormatter() 
    formatter.dateFormat = dateFormatString 

    return formatter.date(from: dateString) 
} 

예 날짜/시간 나는 다음 정수 값을 저장하고

2017-03-01T09:38:05-05:00 

문자열 (timeIntervalSince1970)를 Firebase에 보내면 잘못된 날짜를 오전 3 시로 볼 수 있습니다. 여기에 내가 말했듯이

let startofDay = Calendar.current.startOfDay(for: productionDate) 
let dateValue = Int(startofDay.timeIntervalSince1970) 

을 중포 기지에 저장하고있는 int 값을 생성하기 위해 사용하고 코드의 조각이있어, 대부분의 시간, 시간이 정확한 날짜의 자정 될 수있을 테니까요하지만 응용 프로그램입니다 때 백그라운드에서 웹 서비스를 가져 오면 Firebase 데이터베이스에 3am 팝업이 표시되는 경우가 있습니다.

나는 여기에 정보를주지 않았다는 것을 알고있다. 나는 누군가가 똑같은 문제를 겪고 그것을 고치기위한 방법을 찾거나 누군가 내 코드를보고 어떻게 내가 멍청이가되는지 말할 수 있기를 정말로 바라고있다.

감사합니다.

+0

UTC를 현재 시간대와 혼합 할 가능성이 높습니다. –

+0

@Robert 웹 서비스 페이로드에 'America/New_York'와 같은 표준 시간대 문자열 값이 표시되므로 DateFormatter를 초기화 할 때이 값을 사용합니다. 감사! – Moebius

+0

왜 당신은 startOfDay를 얻으려고합니까? 캘린더 계산에 날짜가 필요한 경우 정오 (12pm)를 사용하는 것이 좋습니다. 매일 12pm 있지만 매일 12am 있습니다. –

답변

-3

마침내이 문제를 재현 할 수 있었으며 3시를 반환하는 startOfDay와 아무런 관련이 없습니다. 나는 진짜 문제에 대한 해답을 찾기 위해 또 다른 질문을 게시하고있다.

+0

얇은 답변 방법 - .- –