从这样的日期中删除时间 2016-02-10 00:00:00
remove time from a date like this 2016-02-10 00:00:00
你好我有一个这样的约会
2016-02-10 00:00:00
我只想以这种方式从中获取日期
14.05.2016 or 14-05-2016
这是我试过的
let dateFormatter = NSDateFormatter()
let date = "2016-02-10 00:00:00"
dateFormatter.dateFormat = "dd-MM-yyyy"
let newdate = dateFormatter.dateFromString(date)
print(newdate) //nil is coming
如果您有一个采用一种格式的输入日期字符串(或者更确切地说,日期和时间字符串)并且您想要以不同的格式输出,那么您需要 2 个日期格式化程序:一个采用源字符串的输入格式化程序格式并将其转换为 NSDate(使用 dateFromString
),然后输出格式器采用 NSDate 并将其转换为输出日期字符串(使用 stringFromDate
)。
您的代码是错误的,因为您正在创建一个为输出日期字符串格式配置的日期格式化程序,并试图使用它将您的输入日期字符串转换为 NSDate。
我不是 NSDateFormatter 日期字符串方面的专家。任何时候我需要与他们合作时,我都必须挖掘文档并找出我要解决的特定问题的解决方案。因此,我将把这部分问题留给你。只要说您需要一个输入日期格式化程序,它使用 完全 匹配输入日期字符串格式的格式字符串就够了。这可能很棘手,因为如果它不完全正确,它就会失败并且 returns 一个 nil NSDate。
输出日期格式化程序更容易,因为如果它不太正确,您的输出日期将不会像您希望的那样显示,但这很明显。
您的代码不正确。
如果您有 NSDate
个要使用 NSDateFormatter
转换为字符串的实例
您使用此代码:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let dateString = dateFormatter.stringFromDate(date)
您的代码中的问题是您有一个值为 2016-02-10 00:00:00
的日期字符串,但您使用日期格式“dd-MM-yyyy”解析它,这就是为什么您得到一个 nil 日期。
相反,您需要先使用 dateFormatter.dateFormat = "yyy-MM-dd hh:mm:ss"
解析它
好的,我自己解决了这个问题
let date = "2016-02-10 00:00:00"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let dateFromString : NSDate = dateFormatter.dateFromString(date)!
dateFormatter.dateFormat = "dd-MM-yyyy"
let datenew= dateFormatter.stringFromDate(dateFromString)
print(datenew)
Swift 3 版本:
let date = "2016-02-10"
let dateformater = DateFormatter()
dateformater.dateFormat = "YYYY-MM-dd"
let dateString = dateformater.date(from: date)
//print date
print(dateString)
对于 swift : (Swift 3) 个应用程序,
如果您正在使用 Date()
对象,请确保您设置 timeStyle
从 DateFormatter()
到 none
示例:
let today = Date()
let dateFormatter = DateFormatter()
//dateFormatter.dateFormat = "yyyy-MM-dd", upto you
dateFormatter.dateFormat = "dd-MM-yyyy"
//This is Important!
dateFormatter.timeStyle = DateTimeFormatter.Style.none
let dateString = dateFormatter.string(from: today)
比提议的版本更好的方法是不使用字符串格式化程序从日期转换,而是使用日历:
public func removeTimeStamp(fromDate: Date) -> Date {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: fromDate)) else {
fatalError("Failed to strip time from Date object")
}
return date
}
推荐您使用库 SwiftDate,它有许多方便的选项。
对于您的情况,请使用日期截断,例如:
let date = "2017-07-22 15:03:50".toDate("yyyy-MM-dd HH:mm:ss", region: rome)
let truncatedTime = date.dateTruncated(from: .hour) // 2017-07-22T00:00:00+02:00
在以下日期使用扩展名:
extension Date {
public var removeTimeStamp : Date? {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: self)) else {
return nil
}
return date
}
}
用法:
let now = Date()
let nowWithouTime = now.removeTimeStamp
对于Swift 4及以上,您可以使用以下代码
let date = "2016-02-10 00:00:00"
let dateFormatter = DateFormatter()
let date = modelDeals.dealItemInDetail?.validTo ?? ""
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
dateFormatter.dateFormat = "dd-MM-yyyy"
let datenew = dateFormatter.string(from: dateFromString as Date)
Swift 5.5+
使用formatted(_:)
let now = Date.now
let date = now.formatted(.iso8601.year().month().day().dateSeparator(.dash))
或formatted(date:time:)
let now = Date.now
let date = now.formatted(date: .abbreviated, time: .omitted)
您可以使用 .long
或 .numeric
等 DateStyle 而不是 .abbreviated
。
还有一些其他的 DateStyle,例如 .abbreviated
、.long
、.numeric
.
你好我有一个这样的约会
2016-02-10 00:00:00
我只想以这种方式从中获取日期
14.05.2016 or 14-05-2016
这是我试过的
let dateFormatter = NSDateFormatter()
let date = "2016-02-10 00:00:00"
dateFormatter.dateFormat = "dd-MM-yyyy"
let newdate = dateFormatter.dateFromString(date)
print(newdate) //nil is coming
如果您有一个采用一种格式的输入日期字符串(或者更确切地说,日期和时间字符串)并且您想要以不同的格式输出,那么您需要 2 个日期格式化程序:一个采用源字符串的输入格式化程序格式并将其转换为 NSDate(使用 dateFromString
),然后输出格式器采用 NSDate 并将其转换为输出日期字符串(使用 stringFromDate
)。
您的代码是错误的,因为您正在创建一个为输出日期字符串格式配置的日期格式化程序,并试图使用它将您的输入日期字符串转换为 NSDate。
我不是 NSDateFormatter 日期字符串方面的专家。任何时候我需要与他们合作时,我都必须挖掘文档并找出我要解决的特定问题的解决方案。因此,我将把这部分问题留给你。只要说您需要一个输入日期格式化程序,它使用 完全 匹配输入日期字符串格式的格式字符串就够了。这可能很棘手,因为如果它不完全正确,它就会失败并且 returns 一个 nil NSDate。 输出日期格式化程序更容易,因为如果它不太正确,您的输出日期将不会像您希望的那样显示,但这很明显。
您的代码不正确。
如果您有 NSDate
个要使用 NSDateFormatter
您使用此代码:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let dateString = dateFormatter.stringFromDate(date)
您的代码中的问题是您有一个值为 2016-02-10 00:00:00
的日期字符串,但您使用日期格式“dd-MM-yyyy”解析它,这就是为什么您得到一个 nil 日期。
相反,您需要先使用 dateFormatter.dateFormat = "yyy-MM-dd hh:mm:ss"
好的,我自己解决了这个问题
let date = "2016-02-10 00:00:00"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let dateFromString : NSDate = dateFormatter.dateFromString(date)!
dateFormatter.dateFormat = "dd-MM-yyyy"
let datenew= dateFormatter.stringFromDate(dateFromString)
print(datenew)
Swift 3 版本:
let date = "2016-02-10"
let dateformater = DateFormatter()
dateformater.dateFormat = "YYYY-MM-dd"
let dateString = dateformater.date(from: date)
//print date
print(dateString)
对于 swift : (Swift 3) 个应用程序,
如果您正在使用 Date()
对象,请确保您设置 timeStyle
从 DateFormatter()
到 none
示例:
let today = Date()
let dateFormatter = DateFormatter()
//dateFormatter.dateFormat = "yyyy-MM-dd", upto you
dateFormatter.dateFormat = "dd-MM-yyyy"
//This is Important!
dateFormatter.timeStyle = DateTimeFormatter.Style.none
let dateString = dateFormatter.string(from: today)
比提议的版本更好的方法是不使用字符串格式化程序从日期转换,而是使用日历:
public func removeTimeStamp(fromDate: Date) -> Date {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: fromDate)) else {
fatalError("Failed to strip time from Date object")
}
return date
}
推荐您使用库 SwiftDate,它有许多方便的选项。 对于您的情况,请使用日期截断,例如:
let date = "2017-07-22 15:03:50".toDate("yyyy-MM-dd HH:mm:ss", region: rome)
let truncatedTime = date.dateTruncated(from: .hour) // 2017-07-22T00:00:00+02:00
在以下日期使用扩展名:
extension Date {
public var removeTimeStamp : Date? {
guard let date = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: self)) else {
return nil
}
return date
}
}
用法:
let now = Date()
let nowWithouTime = now.removeTimeStamp
对于Swift 4及以上,您可以使用以下代码
let date = "2016-02-10 00:00:00"
let dateFormatter = DateFormatter()
let date = modelDeals.dealItemInDetail?.validTo ?? ""
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
let dateFromString : NSDate = dateFormatter.date(from: date)! as NSDate
dateFormatter.dateFormat = "dd-MM-yyyy"
let datenew = dateFormatter.string(from: dateFromString as Date)
Swift 5.5+
使用formatted(_:)
let now = Date.now
let date = now.formatted(.iso8601.year().month().day().dateSeparator(.dash))
或formatted(date:time:)
let now = Date.now
let date = now.formatted(date: .abbreviated, time: .omitted)
您可以使用 .long
或 .numeric
等 DateStyle 而不是 .abbreviated
。
还有一些其他的 DateStyle,例如 .abbreviated
、.long
、.numeric
.