gpt4 book ai didi

swift - 如何计算 Swift 中的特定日期(使用 NSDate)

转载 作者:行者123 更新时间:2023-11-28 16:11:31 25 4
gpt4 key购买 nike

我正在使用 swift 开发 ios 应用程序,我有一个带有 7 个选项的 slider 。每个选项代表特定日期。

目前我的代码如下:

func convertValueToDate(value: Float) -> NSDate{

var currentDate:NSDate = NSDate()

switch(value){
case 1:
print("5 years ago")
return NSDate()
case 2:
print("one year ago")
return NSDate()
case 3:
print("six months ago")
return NSDate()
case 4:
print("one month ago")
return NSDate()
case 5:
print("one week ago")
return NSDate()
case 6:
print("yesterday")
return NSDate()
case 7:
print("today")
return NSDate()
default:
print("default date")
return NSDate()
}
}

正如您在上面看到的那样 - 我在控制台中打印了我想要返回的内容。但我不想打印,而是想以 NSDate 格式返回这些日期。我不知道如何计算每个选项的时间,因为我想每天都有 0:00:01 AM 的时间。所以例如。当用户输入数字 7 时,我想向他返回昨天 0:00:01 AM 的确切日期。当用户选择数字 5 时,我想给他一个星期前的日期,时间为 0:00:01 AM,依此类推。我如何计算它以便此函数始终返回时间 0:00:01 AM 和计算日期?

最佳答案

您可以使用 NSCalendar 方法 dateByAddingUnit:

func convertValueToDate(value: Float) -> NSDate {
struct Cal {
static let iso8601 = NSCalendar(identifier: NSCalendarIdentifierISO8601)!
}
let now = NSDate()
print("now: ", now)
switch(value) {
case 1:
print("5 years ago")
return Cal.iso8601.dateByAddingUnit(.Year, value: -5, toDate: now, options: [])!
case 2:
print("one year ago")
return Cal.iso8601.dateByAddingUnit(.Year, value: -1, toDate: now, options: [])!
case 3:
print("six months ago")
return Cal.iso8601.dateByAddingUnit(.Month, value: -6, toDate: now, options: [])!
case 4:
print("one month ago")
return Cal.iso8601.dateByAddingUnit(.Month, value: -1, toDate: now, options: [])!
case 5:
print("one week ago")
return Cal.iso8601.dateByAddingUnit(.WeekOfYear, value: -1, toDate: now, options: [])!
case 6:
print("yesterday")
return Cal.iso8601.dateByAddingUnit(.Day, value: -1, toDate: now, options: [])!
case 7:
print("today")
return now
default:
print("default date")
return now
}
}

如果您需要返回该日期的开始日期,您可以使用 NSCalendar startOfDayForDate 方法。

func convertValueToDate(value: Float) -> NSDate {
struct Cal {
static let iso8601 = NSCalendar(identifier: NSCalendarIdentifierISO8601)!
}
let now = NSDate()
print("now: ", now)
let result: NSDate
switch(value) {
case 1:
print("5 years ago")
result = Cal.iso8601.dateByAddingUnit(.Year, value: -5, toDate: now, options: [])!
case 2:
print("one year ago")
result = Cal.iso8601.dateByAddingUnit(.Year, value: -1, toDate: now, options: [])!
case 3:
print("six months ago")
result = Cal.iso8601.dateByAddingUnit(.Month, value: -6, toDate: now, options: [])!
case 4:
print("one month ago")
result = Cal.iso8601.dateByAddingUnit(.Month, value: -1, toDate: now, options: [])!
case 5:
print("one week ago")
result = Cal.iso8601.dateByAddingUnit(.WeekOfYear, value: -1, toDate: now, options: [])!
case 6:
print("yesterday")
result = Cal.iso8601.dateByAddingUnit(.Day, value: -1, toDate: now, options: [])!
case 7:
print("today")
result = now
default:
print("default date")
result = now
}
return Cal.iso8601.startOfDayForDate(result)
}

关于swift - 如何计算 Swift 中的特定日期(使用 NSDate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com