2
次の時間の時間を探したいと思います。 など。今SwiftのCalendar nextDateメソッドを使用して次の時間の時間を見つける方法
です:4/9/16、10時12分34秒AM GMT + 10 私が取得したい:4/9/16を、11時00分○○秒AM GMT + 10
だから私は試してみましたCalendar.current.nextDateを使用していますが、私は奇妙な応答を得ました。 サンプルコードは次のとおりです。
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .short
dateFormatter.timeStyle = .long
var dateComponents = DateComponents()
dateComponents.minute = 0
dateComponents.second = 0
let beginDate = Date(timeIntervalSince1970: 0)
var beginDateComponents = Calendar.current.dateComponents(in: TimeZone.current, from: beginDate)
beginDateComponents.minute = 0
beginDateComponents.second = 0
let modifiedDate = Calendar.current.date(from: beginDateComponents)!
let nextHourlyTime = Calendar.current.nextDate(after: modifiedDate, matching: dateComponents, matchingPolicy: .nextTime)!
print("modifiedDate: \(dateFormatter.string(from: modifiedDate))")
print("beginDate: \(dateFormatter.string(from: beginDate))")
print("nextHourlyTime: \(dateFormatter.string(from: nextHourlyTime))")
/*
modifiedDate: 1/1/70, 10:00:00 AM GMT+10
beginDate: 1/1/70, 10:00:00 AM GMT+10
nextHourlyTime: 1/2/70, 12:00:00 AM GMT+10
*/
しかし、私は、コードコメントを入力した場合:「dateComponents.second = 0」を、私は正しい答えを得るでしょう。
AppleのnextDate APIに問題がありますか?
ニースの優雅なコード。それは正しく行います。 Gregorian.calendar.nextDate(後に:self、matching:DateComponents(分:0、秒:0)、matchingPolicy:.nextTime) "が正しく動作しない理由を理解できません" – allenlinli
美しく簡単です...結果を投稿したときにあなたが東海岸にいたと言うことができると思います。 ;-) – BonanzaDriver
ありがとうございます。私は 'Calendar.current.date(Calendar.current.dateComponents([。year、.month、.day、.hour]、from:Date())')に 'Calendar.current.dateを使ってみました。それはうまくいかないでしょう。 – Stefan