Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios 使用Swift将当前时间设置为yyyy MM dd 00:00:00_Ios_Swift_Datetime_Nsdate_Nsdateformatter - Fatal编程技术网

Ios 使用Swift将当前时间设置为yyyy MM dd 00:00:00

Ios 使用Swift将当前时间设置为yyyy MM dd 00:00:00,ios,swift,datetime,nsdate,nsdateformatter,Ios,Swift,Datetime,Nsdate,Nsdateformatter,我想问一下NSDate,如何设置/格式化当前时间,如“2015-08-12 09:30:41+0000”到“2015-08-12 00:00:00+0000” 我已经在使用: var dateFormatter = NSDateFormatter() dateFormatter.dateStyle = .MediumStyle dateFormatter.timeStyle = .NoStyle //result date will be : Aug 12, 2015 但是,值日期在数据库中的

我想问一下
NSDate
,如何设置/格式化当前时间,如“2015-08-12 09:30:41+0000”到“2015-08-12 00:00:00+0000”

我已经在使用:

var dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .NoStyle
//result date will be : Aug 12, 2015

但是,值日期在数据库中的存储方式不是“2015-08-12 00:00:00+0000”,而是“2015-08-11 17:00:00+0000 UTC”

从NSDate实例中删除时间部分的最简单方法是

let startOfDate = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
要根据当前时区获取日期,请使用

let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let startOfDate = calendar.startOfDayForDate(NSDate())
println(startOfDate)
斯威夫特4
从NSDate实例中删除时间部分的最简单方法是

let startOfDate = NSCalendar.currentCalendar().startOfDayForDate(NSDate())
要根据当前时区获取日期,请使用

let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let startOfDate = calendar.startOfDayForDate(NSDate())
println(startOfDate)
斯威夫特4
如果您只关心用户设备上的时区,即不打算将格式化的日期字符串保存到服务器等,则可以使用以下代码:

var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
如果还希望将该日期字符串保存到服务器,则应将时区信息添加到格式化程序:

var formatter: NSDateFormatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
更新

现在我理解了您实际想要做的事情,您有一个日期字符串,而不是一个NSDate对象作为输入

您可以使用以下代码来实现所需的输出,关于保存输入的时区信息

let dateString = "2015-08-12 09:30:41 +0000"
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let timeZone = NSTimeZone(forSecondsFromGMT: 0)

let inputDateFormatter = NSDateFormatter()
inputDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss Z"
inputDateFormatter.calendar = calendar

if let inputDate = inputDateFormatter.dateFromString(dateString) {
    let outPutDateFormatter = NSDateFormatter()
    outPutDateFormatter.calendar = calendar
    outPutDateFormatter.timeZone = timeZone
    outPutDateFormatter.dateFormat = "yyyy-MM-dd 00:00:00 Z"
    print(outPutDateFormatter.stringFromDate(inputDate))
}

如果您只关心用户设备上的时区,即不打算将格式化的日期字符串保存到服务器等,则可以使用以下代码:

var formatter: NSDateFormatter = NSDateFormatter()
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
如果还希望将该日期字符串保存到服务器,则应将时区信息添加到格式化程序:

var formatter: NSDateFormatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.dateFormat="yyyy-MM-dd 00:00:00 Z"
formatter.stringFromDate(date)
更新

现在我理解了您实际想要做的事情,您有一个日期字符串,而不是一个NSDate对象作为输入

您可以使用以下代码来实现所需的输出,关于保存输入的时区信息

let dateString = "2015-08-12 09:30:41 +0000"
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let timeZone = NSTimeZone(forSecondsFromGMT: 0)

let inputDateFormatter = NSDateFormatter()
inputDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss Z"
inputDateFormatter.calendar = calendar

if let inputDate = inputDateFormatter.dateFromString(dateString) {
    let outPutDateFormatter = NSDateFormatter()
    outPutDateFormatter.calendar = calendar
    outPutDateFormatter.timeZone = timeZone
    outPutDateFormatter.dateFormat = "yyyy-MM-dd 00:00:00 Z"
    print(outPutDateFormatter.stringFromDate(inputDate))
}
斯威夫特4 斯威夫特4

您可以使用
NSDateFormatter
dateFormat
属性。如何使用dateFormat?dateFormat=“yyy-MM-dd 00:00:00”?正确。根据您的需要进行更改。我在游乐场尝试,使用格式“yyy-MM-dd 00:00:00”“结果是零。您可以使用
NSDateFormatter
dateFormat
属性。如何使用dateFormat?”?dateformat=“yyyy-MM-dd 00:00:00”?正确。根据您的需要更改。我在操场尝试,使用格式“yyy-MM-dd 00:00:00”,结果为零。但是如果我打印LN((startOfDate)”),为什么结果日期:2015-08-11 17:00:00+0000NSDate不知道您居住的时区。用
println(NSDate())
打印当前日期也会打印UTC中的日期,但如果我打印ln(((startOfDate)”),为什么结果日期:2015-08-11 17:00:00+0000NSDate不知道您居住的时区。使用
println(NSDate())打印当前日期也打印UTCi中的日期已尝试使用您的格式建议,我输入2015-08-13 hh:mm:ss(当前时间),使用您的格式,但在数据库中,值日期为2015-08-12 17:00:00+000您是否确保小时/分钟/秒格式是硬编码的?如果使用上述相同的格式化字符串,则无法以格式化字符串输出小时值。您可以尝试在Xcode调试控制台上打印格式化的日期字符串并确认吗?我已经尝试使用您的格式建议,我输入2015-08-13 hh:mm:ss(当前时间),格式使用您的格式,但在数据库中,值日期为2015-08-12 17:00:00+000您确定小时/分钟/秒格式是硬编码的吗?如果使用上述相同的格式化字符串,则无法以格式化字符串输出小时值。你能试着在Xcode调试控制台上打印格式化的日期字符串并确认吗?这个解决方案中有一个潜在的bug。当您将dateString解析为NSDate对象时,您忽略了时区信息,因此,如果您有一个输入dateString,如“2015-08-12 23:30:41-0900”,它将生成“2015-08-12 00:00:00+0000”作为输出,而正确的输出应该是“2015-08-13 00:00:00+0000”@LeoDabus,我只想强调一个事实,您已经给出了一个错误的解决方案,并且它被认为是一个正确的答案。如果没有人发现这一点,这将对那些没有考虑就接受这个答案的人造成潜在的损害。所以,没什么私事,真的。:)你在鸡蛋上发现头发,我没有。从这个答案中学习新东西是没有问题的。它没有返回错误
2015-08-12 00:00:00+0000
干杯!这个解决方案中有一个潜在的bug。当您将dateString解析为NSDate对象时,您忽略了时区信息,因此,如果您有一个输入dateString,如“2015-08-12 23:30:41-0900”,它将生成“2015-08-12 00:00:00+0000”作为输出,而正确的输出应该是“2015-08-13 00:00:00+0000”@LeoDabus,我只想强调一个事实,您已经给出了一个错误的解决方案,并且它被认为是一个正确的答案。如果没有人发现这一点,这将对那些没有考虑就接受这个答案的人造成潜在的损害。所以,没什么私事,真的。:)你在鸡蛋上发现头发,我没有。从这个答案中学习新东西是没有问题的。它没有返回错误
2015-08-12 00:00:00+0000
干杯!