相信很多app需要显示年月日时分,但是系统自带的datapicker选择时分后没有年月,故需要这样的
代码地址:https://github.com/jinliyuelong/LYJSwiftDemo
项目上不需要显示秒,所以隐藏了秒,需要显示秒的同学,可以参照代码隐藏即可
效果图:
view代码:
//
// LYJDatePicker02.swift
// MyswiftDemo
//
// Created by Liyanjun on 2017/2/8.
// Copyright © 2017年 hand. All rights reserved.
//
import UIKit
/// 这是时间选择器,实现 yyyy-mm-dd HH:mi:ss
class LYJDatePicker02: UIView {
var canButtonReturnB: (() -> Void)? //取消按钮的回调
var sucessReturnB: ((_ date:String) -> Void)?//选择的回调
var title = UILabel.init(lableText: "选择时间")//标题
var cancelButton = UIButton.init(title: "取消", bgColor: UIColor.clear, font: CGFloat(mylableSize)) //取消按钮
var confirmButton = UIButton.init(title: "确定", bgColor: UIColor.clear, font: CGFloat(mylableSize)) //取消按钮
var pickerView = UIPickerView()
var lineView = UIView()//一条横线
var returnString:String {
get{
let selectedMonthFormat = String(format:"%.2d",selectedMonth)
let selectedDayFormat = String(format:"%.2d",selectedDay)
let selectedHourFormat = String(format:"%.2d",selectedHour)
let selectedMinuteFormat = String(format:"%.2d",selectedMinute)
return "\(selectedYear)-\(selectedMonthFormat)-\(selectedDayFormat) \(selectedHourFormat):\(selectedMinuteFormat)"
}
} //返回的时间字符串
//数据相关
var yearRange = 30 + 1000//年的范围
var dayRange = 0 //
var startYear = 0
var selectedYear = 0;
var selectedMonth = 0;
var selectedDay = 0;
var selectedHour = 0;
var selectedMinute = 0;
var selectedSecond = 0;
override init(frame: CGRect) {
super.init(frame: frame)
self.setupUI()
self.initData()
}
convenience init() {
self.init(frame:CGRect.init(x: 0, y: 0, width: 100, height: 100))
self.setupUI()
self.initData()
}
override func layoutSubviews() {
super.layoutSubviews()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
//MARK:初始化数据
func initData() {
let calendar0 = Calendar.init(identifier: .gregorian)//公历
var comps &