swift-比较今天和过去的日期
我是斯威夫特的新手。我对约会有问题 如果我得到一个像“2016-01-25T10:04:53.498Z”这样的日期字符串,但我想比较现在的日期和日期字符串。我该怎么办 我以微信作为参考swift-比较今天和过去的日期,swift,date,Swift,Date,我是斯威夫特的新手。我对约会有问题 如果我得到一个像“2016-01-25T10:04:53.498Z”这样的日期字符串,但我想比较现在的日期和日期字符串。我该怎么办 我以微信作为参考 let currentDate = NSDate() func week() -> String { let myWeekday: Int = (Calendar.current as NSCalendar).components([NSCalendar.Unit.weekday], from:
let currentDate = NSDate()
func week() -> String {
let myWeekday: Int = (Calendar.current as NSCalendar).components([NSCalendar.Unit.weekday], from: self).weekday!
switch myWeekday {
case 0:
return "Sun"
case 1:
return "Mon"
case 2:
return "Tue"
case 3:
return "Wed"
case 4:
return "Thu"
case 5:
return "Fri"
case 6:
return "Sat"
default:
break
}
return "none"
}
var chatTimeString: String {
get {
let calendar = Calendar.current
let now = Date()
let unit: NSCalendar.Unit = [
NSCalendar.Unit.minute,
NSCalendar.Unit.hour,
NSCalendar.Unit.day,
NSCalendar.Unit.month,
NSCalendar.Unit.year,
]
let nowComponents:DateComponents = (calendar as NSCalendar).components(unit, from: now)
let targetComponents:DateComponents = (calendar as NSCalendar).components(unit, from: self)
let year = nowComponents.year! - targetComponents.year!
let month = nowComponents.month! - targetComponents.month!
let day = nowComponents.day! - targetComponents.day!
if year != 0 {
return String(format: "%zdY%zdM%zdD %02d:%02d", targetComponents.year!, targetComponents.month!, targetComponents.day!, targetComponents.hour!, targetComponents.minute!)
} else {
if (month > 0 || day > 7) {
return String(format: "%zdM%zdD %02d:%02d", targetComponents.month!, targetComponents.day!, targetComponents.hour!, targetComponents.minute!)
} else if (day > 2) {
return String(format: "%@ %02d:%02d",self.week(), targetComponents.hour!, targetComponents.minute!)
} else if (day == 2) {
if targetComponents.hour! < 12 {
return String(format: "The day before yesterday A.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else if targetComponents.hour == 12 {
return String(format: "The day before yesterday P.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else {
return String(format: "The day before yesterday P.M %02d:%02d",targetComponents.hour! - 12, targetComponents.minute!)
}
} else if (day == 1) {
if targetComponents.hour! < 12 {
return String(format: "Yesterday A.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else if targetComponents.hour == 12 {
return String(format: "Yesterday P.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else {
return String(format: "Yesterday P.M %02d:%02d",targetComponents.hour! - 12, targetComponents.minute!)
}
} else if (day == 0){
if targetComponents.hour! < 12 {
return String(format: "A.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else if targetComponents.hour == 12 {
return String(format: "P.M %02d:%02d",targetComponents.hour!, targetComponents.minute!)
} else {
return String(format: "P.M %02d:%02d",targetComponents.hour! - 12, targetComponents.minute!)
}
} else {
return ""
}
}
}
}
让currentDate=NSDate()
func week()->字符串{
让myWeekday:Int=(Calendar.current作为NSCalendar.components([NSCalendar.Unit.weekday]),from:self.weekday!
切换工作日{
案例0:
回归“太阳”
案例1:
返回“Mon”
案例2:
返回“星期二”
案例3:
返回“Wed”
案例4:
返回“Thu”
案例5:
返回“星期五”
案例6:
返回“Sat”
违约:
打破
}
返回“无”
}
var chatTimeString:String{
得到{
让calendar=calendar.current
让我们现在=日期()
let单位:NSCalendar。单位=[
NSCalendar.Unit.minute,
NSCalendar.Unit.hour,
NSCalendar.Unit.day,
NSCalendar.Unit.month,
NSCalendar.Unit.year,
]
让nowComponents:DateComponents=(日历为NSCalendar)。组件(单位,起始日期:now)
让targetComponents:DateComponents=(日历为NSCalendar)。组件(单位,发件人:self)
让year=nowComponents.year!-targetComponents.year!
让month=nowComponents.month!-targetComponents.month!
让day=nowComponents.day!-targetComponents.day!
如果年份!=0{
返回字符串(格式:“%zdY%zdM%zdD%02d:%02d”,targetComponents.year!,targetComponents.month!,targetComponents.day!,targetComponents.hour!,targetComponents.minute!)
}否则{
如果(月>日>7){
返回字符串(格式:“%zdM%zdD%02d:%02d”,targetComponents.month!,targetComponents.day!,targetComponents.hour!,targetComponents.minute!)
}否则,如果(第2天以上){
返回字符串(格式:“%@%02d:%02d”,self.week(),targetComponents.hour!,targetComponents.minute!)
}否则,如果(天==2){
如果targetComponents.hour!<12{
返回字符串(格式:“前天上午%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则,如果targetComponents.hour==12{
返回字符串(格式:“前天下午%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则{
返回字符串(格式:“前天下午%02d:%02d”,targetComponents.hour!-12,targetComponents.minute!)
}
}否则,如果(天==1){
如果targetComponents.hour!<12{
返回字符串(格式:“昨天上午%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则,如果targetComponents.hour==12{
返回字符串(格式:“昨天下午%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则{
返回字符串(格式:“昨天下午%02d:%02d”,targetComponents.hour!-12,targetComponents.minute!)
}
}否则,如果(天==0){
如果targetComponents.hour!<12{
返回字符串(格式:“A.M%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则,如果targetComponents.hour==12{
返回字符串(格式:“P.M%02d:%02d”,targetComponents.hour!,targetComponents.minute!)
}否则{
返回字符串(格式:“P.M%02d:%02d”,targetComponents.hour!-12,targetComponents.minute!)
}
}否则{
返回“”
}
}
}
}
[基于此问题的标题]不要比较日期组件。直接比较日期。如果您有一个日期字符串,那么使用DateFormatter将其转换回日期
2> var past = Date ()
past: Date = 2017-04-28 03:59:08 UTC
3> var now = Date()
now: Date = 2017-04-28 03:59:15 UTC
4> now > past
$R0: Bool = true
[基于此问题的标题]不要比较日期组件。直接比较日期。如果您有一个日期字符串,那么使用DateFormatter将其转换回日期
2> var past = Date ()
past: Date = 2017-04-28 03:59:08 UTC
3> var now = Date()
now: Date = 2017-04-28 03:59:15 UTC
4> now > past
$R0: Bool = true
为了将日期字符串与现在进行比较-将字符串转换为
date
对象,然后将其与现在进行比较;它由Date()
初始化
let dateString = "2016-01-25T10:04:53.498Z"
// Setup a date formatter to match the format of your string
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
// Create a date object from the string
if let date = dateFormatter.date(from: dateString) {
if date < Date() {
print("Before now")
} else {
print("After now")
}
}
let dateString=“2016-01-25T10:04:53.498Z”
//设置日期格式化程序以匹配字符串的格式
让dateFormatter=dateFormatter()
dateFormatter.locale=locale(标识符:“en_US_POSIX”)
dateFormatter.dateFormat=“yyyy-MM-dd'HH:MM:ss.SSSZ”
//从字符串创建日期对象
如果let date=dateFormatter.date(from:dateString){
如果日期<日期(){
打印(“以前”)
}否则{
打印(“以后”)
}
}
要将日期字符串与现在进行比较,请将字符串转换为日期
对象,然后将其与现在进行比较;它由Date()
初始化
let dateString = "2016-01-25T10:04:53.498Z"
// Setup a date formatter to match the format of your string
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
// Create a date object from the string
if let date = dateFormatter.date(from: dateString) {
if date < Date() {
print("Before now")
} else {
print("After now")
}
}
let dateString=“2016-01-25T10:04:53.498Z”
//设置日期格式化程序以匹配字符串的格式
让dateFormatter=dateFormatter()
dateFormatter.locale=locale(标识符:“en_US_POSIX”)
dateFormatter.dateFormat=“yyyy-MM-dd'HH:MM:ss.SSSZ”
//从字符串创建日期对象
如果let date=dateFormatter.date(from:dateString){
如果日期<日期(){
打印(“以前”)
}否则{
打印(“以后”)
}
}
您发布的代码与您的问题有什么关系?您发布的代码与您的问题有什么关系?