var dateString = "02-03-2017"
var dateFormatter = DateFormatter()
// This is important - we set our input date format to match our input string
// if the format doesn't match you'll get nil from your string, so be careful
dateFormatter.dateFormat = "dd-MM-yyyy"
//`date(from:)` returns an optional so make sure you unwrap when using.
var dateFromString: Date? = dateFormatter.date(from: dateString)
Date to String
var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
guard let unwrappedDate = dateFromString else { return }
//Using the dateFromString variable from before.
let stringDate: String = formatter.string(from: dateFromString)
斯威夫特3
更新时间:2017年7月20日
String to NSDate
var dateString = "02-03-2017"
var dateFormatter = DateFormatter()
// This is important - we set our input date format to match our input string
// if the format doesn't match you'll get nil from your string, so be careful
dateFormatter.dateFormat = "dd-MM-yyyy"
var dateFromString = dateFormatter.date(from: dateString)
NSDate to String
var formatter = DateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate: String = formatter.string(from: dateFromString)
斯威夫特
更新时间:2015年10月22日
String to NSDate
var dateString = "01-02-2010"
var dateFormatter = NSDateFormatter()
// this is imporant - we set our input date format to match our input string
dateFormatter.dateFormat = "dd-MM-yyyy"
// voila!
var dateFromString = dateFormatter.dateFromString(dateString)
NSDate to String
var formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy"
let stringDate: String = formatter.stringFromDate(NSDate())
println(stringDate)
extension Formatter {
static let customDate: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "dd/MM/yy"
return formatter
}()
static let time: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "HH:mm"
return formatter
}()
static let weekdayName: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "cccc"
return formatter
}()
static let month: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "LLLL"
return formatter
}()
}
extension Date {
var customDate: String {
return Formatter.customDate.string(from: self)
}
var customTime: String {
return Formatter.time.string(from: self)
}
var weekdayName: String {
return Formatter.weekdayName.string(from: self)
}
var monthName: String {
return Formatter.month.string(from: self)
}
}
extension String {
var customDate: Date? {
return Formatter.customDate.date(from: self)
}
}
用法:
// this will be displayed like this regardless of the user and system preferences
Date().customTime // "16:50"
Date().customDate // "06/05/17"
// this will be displayed according to user and system preferences
Date().weekdayName // "Saturday"
Date().monthName // "May"
解析自定义日期并将日期转换回相同的字符串格式:
let dateString = "01/02/10"
if let date = dateString.customDate {
print(date.customDate) // "01/02/10\n"
print(date.monthName) // customDate
}
NSString *dateString = @"01-02-2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// this is important - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
// voila!
dateFromString = [dateFormatter dateFromString:dateString];
Nslog(@"%@",[dateFormatter dateFromString:dateString]);
extension NSDate {
//NSString to NSDate
convenience
init(dateString:String) {
let nsDateFormatter = NSDateFormatter()
nsDateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
// Add the locale if required here
let dateObj = nsDateFormatter.dateFromString(dateString)
self.init(timeInterval:0, sinceDate:dateObj!)
}
//NSDate to time string
func getTime() -> String {
let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "hh:mm"
//Can also set the default styles for date or time using .timeStyle or .dateStyle
return timeFormatter.stringFromDate(self)
}
//NSDate to date string
func getDate() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd, MMM"
return dateFormatter.stringFromDate(self)
}
//NSDate to String
func getString() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
return dateFormatter.stringFromDate(self)
}
}
因此,执行实际代码将如下所示
var dateObjFromString = NSDate(dateString: cutDateTime)
var dateString = dateObjFromString.getDate()
var timeString = dateObjFromString.getTime()
var stringFromDate = dateObjFromString.getString()
let strDate = formatter.stringFromDate(NSDate())
print(strDate)
let dateFromStr = formatter.dateFromString(strDate)
print(dateFromStr)
现在享受 .
19
NSString to NSDate or NSDate to NSString
//This method is used to get NSDate from string
//Pass the date formate ex-"dd-MM-yyyy hh:mm a"
+ (NSDate*)getDateFromString:(NSString *)dateString withFormate:(NSString *)formate {
// Converted date from date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:formate];
NSDate *convertedDate = [dateFormatter dateFromString:dateString];
return convertedDate;
}
//This method is used to get the NSString for NSDate
//Pass the date formate ex-"dd-MM-yyyy hh:mm a"
+ (NSString *)getDateStringFromDate:(NSDate *)date withFormate:(NSString *)formate {
// Converted date from date string
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
[dateFormatter setDateFormat:formate];
NSString *convertedDate = [dateFormatter stringFromDate:date];
return convertedDate;
}
0
以上示例不仅仅是为Swift 3.0编写的
Update - Swift 3.0+ - Convert Date To String
let date = Date() // insert your date data here
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd" // add custom format if you'd like
var dateString = dateFormatter.string(from: date)
2
String To Date
var dateFormatter = DateFormatter()
dateFormatter.format = "dd/MM/yyyy"
var dateFromString: Date? = dateFormatter.date(from: dateString) //pass string here
Date To String
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let newDate = dateFormatter.string(from: date) //pass Date here
17 回答
Swift 4及更高版本
更新:2018年
String to Date
Date to String
斯威夫特3
更新时间:2017年7月20日
String to NSDate
NSDate to String
斯威夫特
更新时间:2015年10月22日
String to NSDate
NSDate to String
Objective-C
NSString to NSDate
NSDate convert to NSString:
做了 NSString extension .
感谢NSDataDetector,它识别了很多格式 .
部分eppz!kit,从GitHub获取类别NSString+EPPZKit.h .
原始答案:您是否关心字符串中包含的日期格式 use NSDataDetector for parsing date .
使用固定格式日期时,您需要将日期格式化程序区域设置为
"en_US_POSIX"
.取自Data Formatting Guide
Swift 3 or later
用法:
解析自定义日期并将日期转换回相同的字符串格式:
在这里,您可以使用所有元素来根据需要自定义它:
为什么不向NSString添加类别?
使用“10”代表一年并不好,因为它可能是1910年,1810年等 . 你可能应该使用4位数 .
如果你可以改变日期
然后你可以使用:
如果要设置格式,请使用以下代码:
使用此方法将
NSString
转换为NSdate
:如果有人有兴趣在Swift这样做这样的事情,我有一个开始的东西,虽然它并不完美 .
NSString的日期
NSString到NSDate
您可以使用扩展名 .
因此,执行实际代码将如下所示
还有一些默认方法,但我想它可能不适用于您从文档中提供的格式
最佳实践是 Build 一个通用类,您可以将所有常用方法,方法用于几乎所有项目,并将@Pavan建议的代码添加为:
..等等所有其他有用的方法
通过这样做,您可以开始为您的应用程序构建一个干净的可重用代码 . 干杯!
As per Swift 2.2
您可以从NSDate中的String和String中轻松获取NSDate . 例如
首先设置日期格式化程序
现在从字符串获取日期,反之亦然 .
现在享受 .
NSString to NSDate or NSDate to NSString
以上示例不仅仅是为Swift 3.0编写的
Update - Swift 3.0+ - Convert Date To String
String To Date
Date To String