使用日期格式“ EEEE:dd:MMM:HH:mm”返回正确的日期和时间,但是星期几不正确。例如,以7.5节的速度进行750海里的航行将花费100个小时。如果我使用代码以11月1日(星期五)的12:00作为开始时间计算到达时间,则它将返回11月5日(星期日)的16:00。时间和日期正确,但星期几不正确。应该是星期二。
@IBAction func Calculate(_ sender: UIButton) {
let userCalendar = Calendar.current
let dateMakerFormatter = DateFormatter()
dateMakerFormatter.dateFormat = "EEEE:dd:MMM:HH:mm"
let distance = (Distance.text! as NSString).floatValue
let speed = (GndSpd.text! as NSString).floatValue
let calcDT = ((distance / speed) * 3600)
if var date = dateMakerFormatter.date(from: (DTG.text!)) {
date = dateMakerFormatter.date(from: (DTG.text!))!
var timeAdj = DateComponents()
timeAdj.second = Int(calcDT)
if var adj = userCalendar.date(byAdding: timeAdj, to: date) {
adj = userCalendar.date(byAdding: timeAdj, to: date)!
CalcDTG.text = dateMakerFormatter.string(from: adj)
}
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您不指定年份,则不能说星期几不正确。
日期格式化程序似乎在创建日期时忽略星期几:
let dateMakerFormatter = DateFormatter()
dateMakerFormatter.dateFormat = "EEEE:dd:MMM:HH:mm"
let date = dateMakerFormatter.date(from: "Friday:01:Nov:12:00")!
print(date) -> 2000-11-01 12:00:00 +0000
print(dateMakerFormatter.string(from: date)) -> Wednesday:01:Nov:12:00
嘿,请问您现在是2000年,11月5日确实是在星期日。
您需要获得的重要信息是,永远不要,永远,永远不要使用字符串来传递代码中的日期值。使用Date
。如果要从API响应中获取日期,请将其更改为摄取日期。如果您从用户输入中获取一个,请使用日期选择器或其他控件。如果您是从用户输入的字符串中获取一个,则建议您为自己做一些不必要的工作,但请务必填写用户未提供的所有详细信息。