gpt4 book ai didi

swift - 如何使用 Swift NSDate 通过取消每个星期日在我的日期数组中保留 future 5 天

转载 作者:行者123 更新时间:2023-11-30 10:14:00 26 4
gpt4 key购买 nike

我试图创建 UIPickerView 让用户选择 5 天的拍卖日期。但是,根据我的要求,我需要禁用/隐藏/不添加与“星期日”相关的日期。我的意思是如果今天是 8/7/2015,我的 UIPickerView 中的数据将是

["All","08/07/2015 (Wed)","09/07/2015 (Thu)","10/07/2015 (Fri)", "11/07/2015 (Sat)","13/07/2015 (Mon)"]

如您所见,我将星期日隐藏在该类别中。我尝试找到方法,但仍然错误。请问有什么帮助吗?

这是我的代码

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
var now = NSDate()

var auctionDate = [String]()

var sdfDDMMYYYYEEE = NSDateFormatter()
sdfDDMMYYYYEEE.dateFormat = "dd/MM/yyyy (EEE)"

var sdfDDMMYYYY = NSDateFormatter()
sdfDDMMYYYY.dateFormat = "dd/MM/yyyy"

var sdfEEE = NSDateFormatter()
sdfEEE.dateFormat = "EEE"

// This is how i
var startTime : NSTimeInterval = (floor(now.timeIntervalSince1970)) + 86400000
auctionDate.append("All")
for var i = 0; i < 5; i++ {
if sdfEEE.stringFromDate(now) == "Sun" {
now = now.dateByAddingTimeInterval(startTime)
i--;
continue;
}
auctionDate.append(sdfDDMMYYYYEEE.stringFromDate(now) as String)
now = now.dateByAddingTimeInterval(startTime)
}

println(auctionDate)

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

我在控制台中得到了输出

[All, 07/07/2015 (Tue), 07/01/2112 (Thu), 08/04/2160 (Tue), 09/07/2208 (Sat), 09/10/2256 (Thu)]

请帮忙。我被这个问题困扰了很长时间。

最佳答案

您的代码中有几个错误。

  • NSDate()NSTimeInterval() 使用,而不是毫秒。 86400000 秒(大约)是 1000 天。
  • 即使添加 86400 秒也是错误的方法,因为一天可能实行夏令时的地区有 23 或 25 小时。
  • now = now.dateByAddingTimeInterval(startTime) 中,您添加数字到当前日期的(毫秒)秒,这根本没有意义。
  • 将工作日名称与“Sun”进行比较在大多数情况下不起作用语言。

话虽如此,这里有一个可能的解决方案,使用正确的方法NSCalendar 方法。有了嵌入的评论,它应该是不言自明:

let cal = NSCalendar.currentCalendar()
let fmt = NSDateFormatter()
fmt.dateFormat = "dd/MM/yyyy (EEE)"

// Start with today (at midnight):
var date = cal.startOfDayForDate(NSDate())

var auctionDates = [ "All" ]

// Repeat until there are enough dates in the array:
while auctionDates.count < 6 {

// Compute weekday of date (1 == Sunday)
let weekDay = cal.component(.CalendarUnitWeekday, fromDate: date)

// Add to array if not Sunday:
if weekDay != 1 {
auctionDates.append(fmt.stringFromDate(date))
}

// Advance one day:
date = cal.dateByAddingUnit(.CalendarUnitDay, value: 1, toDate: date, options: nil)!
}

println(auctionDates)

关于swift - 如何使用 Swift NSDate 通过取消每个星期日在我的日期数组中保留 future 5 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31266926/

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