Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift相当于GMC时间?_Swift_Date - Fatal编程技术网

Swift相当于GMC时间?

Swift相当于GMC时间?,swift,date,Swift,Date,将一个C代码迁移到Swift时,对应的代码是什么 time(&CurrentTime); tm = gmtime(&CurrentTime); dayOfYear = tm->tm_yday + 1; st = tm->tm_hour + tm->tm_min / 60.0 + tm->tm_sec / 3600.0; 我目前将其转换为以下内容,但我猜有些地方出了问题(可能是时间的开始?): 首先,您可以从Swift调用这些C库函数: var curre

将一个C代码迁移到Swift时,对应的代码是什么

time(&CurrentTime);
tm = gmtime(&CurrentTime);
dayOfYear = tm->tm_yday + 1;
st = tm->tm_hour + tm->tm_min / 60.0 + tm->tm_sec / 3600.0;
我目前将其转换为以下内容,但我猜有些地方出了问题(可能是时间的开始?):

首先,您可以从Swift调用这些C库函数:

var currentTime = time(nil)
let tm = gmtime(&currentTime).pointee

let dayOfYear = tm.tm_yday + 1
let st = Double(tm.tm_hour) + Double(tm.tm_min) / 60.0 + Double(tm.tm_sec) / 3600.0
gmtime()
在不调整时区的情况下转换时间值。 为了获得与
日历相同的结果
您必须将其时区设置为GMT:

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
calendar.ordinality(of:…)
的返回值基于, 因此,您不能添加
1

let dayOfYear = calendar.ordinality(of: .day, in: .year, for:  currentTime)!
最后,您可以通过一次调用检索多个日期组件:

let comps = calendar.dateComponents([.hour, .minute, .second], from: currentTime)
let st = Double(comps.hour!) + Double(comps.minute!)/60 + Double(comps.second!)/3600

看起来您正在尝试获取从一天开始(GMT)起的浮点小时数。您还可以通过以下方式实现这一点:

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let now = Date()
let startOfDay = calendar.startOfDay(for: now)
let hours = now.timeIntervalSince(startOfDay) / 60 / 60

到底出了什么问题?你想在这里干什么?
var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let now = Date()
let startOfDay = calendar.startOfDay(for: now)
let hours = now.timeIntervalSince(startOfDay) / 60 / 60