ios swift5 日期时间显示器 UIDatePicker 日期时间选择 前一天 后一天


请添加图片描述
请添加图片描述

上面截图对应的代码

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开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值