文章目录


上面截图对应的代码
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
//当前时间
let dateFormater = DateFormatter.init()
dateFormater.dateFormat = "YYYY-MM-dd-HH-mm-ss" //YYYY-MM-dd-HH-mm-ss
let selectedStr = dateFormater.string(from: Date());
print("当前时间\(selectedStr)")
addDatePicker()
}
//MARK: 日历 -
let headView = UIView()
let datePicker = UIDatePicker()
func addDatePicker(){
view.addSubview(headView)
headView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(200)
make.height.equalTo(200)
}
datePicker.datePickerMode = .date
datePicker.addTarget(self, action: #selector(chooseDate), for:.editingDidEnd)
headView.addSubview(datePicker)
datePicker.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(20)
}
let leftBtn = UIButton()
leftBtn.addTarget(self, action: #selector(leftBtnClick), for: .touchUpInside)
leftBtn.setImage(UIImage(named: "左"), for: .normal)
headView.addSubview(leftBtn)
leftBtn.snp.makeConstraints { make in
make.width.height.equalTo(50)
make.centerY.equalTo(datePicker)
make.right.equalTo(datePicker.snp_leftMargin).offset(-5)
}
let rightBtn = UIButton()
rightBtn.addTarget(self, action: #selector(rightBtnClick), for: .touchUpInside)
rightBtn.setImage(UIImage(named: "右"), for: .normal)
headView.addSubview(rightBtn)
rightBtn.snp.makeConstraints { make in
make.width.height.equalTo(50)
make.centerY.equalTo(datePicker)
make.left.equalTo(datePicker.snp_rightMargin).offset(5)
}
}
@objc func leftBtnClick(){
//前一天
let currentDay = datePicker.date
let lastDay = Date(timeInterval: -24*60*60, since: currentDay)
datePicker.date = lastDay
chooseDate()
}
@objc func rightBtnClick(){
//后一天
let currentDay = datePicker.date
let nextDay = Date(timeInterval: 24*60*60, since: currentDay)
datePicker.date = nextDay
chooseDate()
}
@objc func chooseDate() {
print("chooseDate")
let chooseDate = datePicker.date
let dateFormater = DateFormatter.init()
dateFormater.dateFormat = "YYYY-MM-dd-HH-mm-ss"
let selectedStr = dateFormater.string(from: chooseDate);
print(selectedStr)
}
}
- 打印
当前时间2024-06-24-14-40-11
chooseDate
2024-06-23
chooseDate
2024-06-24
chooseDate
2024-06-25
chooseDate
2024-06-01
下面是其他相关信息
代码1
@IBOutlet weak var myDatePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
myDatePicker.addTarget(self, action: #selector(chooseDate( _:)), for:UIControlEvents.valueChanged)
}
@objc func chooseDate(_ datePicker:UIDatePicker) {
print("chooseDate")
let chooseDate = datePicker.date
let dateFormater = DateFormatter.init()
dateFormater.dateFormat = "YYYY-MM-dd-HH-mm-ss"
selectedStr = dateFormater.string(from: chooseDate);
print(dateFormater.string(from: chooseDate))
}
代码2
//MARK: 日历 -
let datePicker = UIDatePicker()
func addDatePicker(){
datePicker.datePickerMode = .date
datePicker.addTarget(self, action: #selector(chooseDate), for:.editingDidEnd)
headView.addSubview(datePicker)
datePicker.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalToSuperview().offset(20)
}
let leftBtn = UIButton()
leftBtn.addTarget(self, action: #selector(leftBtnClick), for: .touchUpInside)
leftBtn.setImage(UIImage(named: "左"), for: .normal)
headView.addSubview(leftBtn)
leftBtn.snp.makeConstraints { make in
make.width.height.equalTo(50)
make.centerY.equalTo(datePicker)
make.right.equalTo(datePicker.snp_leftMargin).offset(-5)
}
let rightBtn = UIButton()
rightBtn.addTarget(self, action: #selector(rightBtnClick), for: .touchUpInside)
rightBtn.setImage(UIImage(named: "右"), for: .normal)
headView.addSubview(rightBtn)
rightBtn.snp.makeConstraints { make in
make.width.height.equalTo(50)
make.centerY.equalTo(datePicker)
make.left.equalTo(datePicker.snp_rightMargin).offset(5)
}
}
@objc func leftBtnClick(){
//前一天
let currentDay = datePicker.date
let lastDay = Date(timeInterval: -24*60*60, since: currentDay)
datePicker.date = lastDay
chooseDate()
}
@objc func rightBtnClick(){
//后一天
let currentDay = datePicker.date
let nextDay = Date(timeInterval: 24*60*60, since: currentDay)
datePicker.date = nextDay
chooseDate()
}
@objc func chooseDate() {
print("chooseDate")
let chooseDate = datePicker.date
let dateFormater = DateFormatter.init()
dateFormater.dateFormat = "YYYY-MM-dd-HH-mm-ss"
let selectedStr = dateFormater.string(from: chooseDate);
print(selectedStr)
}
1.Preferred Style, preferredDatePickerStyle图示,ios14.2
.automatic .compact(iOS13可以使用)
.wheels
.inline
2.纯代码需要iOS13.4以上才能设置preferredDatePickerStyle属性,但是storyboard,iOS10以上,就可以设置
- 虽然可以设置但是ios13.4以下就只有.wheels一种样式(本人在iphone6s, ios12.5.1, 上亲测的结论)
3.用UIControl的下面几个方法,可能可以通过代码调用直接弹出时间选择器,不需要点击UIDatePicker
4.日期增加(减少)一天,前一天,后一天
iOS swift Date 日期增加(减少)一天 前一天 后一天
参考博客:
40-Swift之UIDatePicker(日期选择器)
UIDatePicker 日期/时间选取器(滚轮)—IOS开发