将 NSDate 格式化为年、月、日和小时、分钟、秒的特定样式

我基本上需要得到当前的日期和时间分开,格式为:

2009-04-26
11:06:54

下面的代码根据同一主题的另一个问题生成

now:        |2009-06-01 23:18:23 +0100|
dateString: |Jun 01, 2009 23:18|
parsed:     |2009-06-01 23:18:00 +0100|

这差不多就是我要找的,但我想把日子和时间分开。

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];


NSDate *now = [[NSDate alloc] init];


NSString *dateString = [format stringFromDate:now];


NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];


NSDate *parsed = [inFormat dateFromString:dateString];


NSLog(@"\n"
"now:        |%@| \n"
"dateString: |%@| \n"
"parsed:     |%@|", now, dateString, parsed);
295917 次浏览

IPhone 格式字符串在 Unicode 格式中。在这个链接的后面是一个表格,解释了上面所有字母的含义,这样你就可以构建你自己的链接了。

当然,不要忘记在使用完日期格式化程序后释放它们。上述代码泄漏 formatnowinFormat

我用的是这个:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];


NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];


NSDate *now = [[NSDate alloc] init];


NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];


NSLog(@"\n"
"theDate: |%@| \n"
"theTime: |%@| \n"
, theDate, theTime);


[dateFormat release];
[timeFormat release];
[now release];
NSDate *date         = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"]
NSString *dateString  = [df stringFromDate:date];
[df setDateFormat:@"hh:mm:ss"];
NSString *hoursString = [df stringFromDate:date];

就是这样,你得到了你想要的一切。

您可以使用此方法,只需将您的日期传递给它

-(NSString *)getDateFromString:(NSString *)string
{


NSString * dateString = [NSString stringWithFormat: @"%@",string];


NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"your current date format"];
NSDate* myDate = [dateFormatter dateFromString:dateString];


NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"your desired format"];
NSString *stringFromDate = [formatter stringFromDate:myDate];


NSLog(@"%@", stringFromDate);
return stringFromDate;
}

为了斯威夫特

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;

没什么新鲜的,但还是想分享我的方法:

+(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *)
destFormat scrString:(NSString *) srcString
{
NSString *dateString = srcString;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//[dateFormatter setDateFormat:@"MM-dd-yyyy"];
[dateFormatter setDateFormat:srcFormat];
NSDate *date = [dateFormatter dateFromString:dateString];


// Convert date object into desired format
//[dateFormatter setDateFormat:@"yyyy-MM-dd"];
[dateFormatter setDateFormat:destFormat];
NSString *newDateString = [dateFormatter stringFromDate:date];
return newDateString;
}
    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
[dateformat setDateFormat:@"Your Date Format"];

设置返回的格式为... 。

返回日期

返回日期

返回日期

返回日期

返回日期

返回 2015-Dec-17 08:07:13日期和时间

返回 2015-Dec-17 08:07日期和时间

有关 点击现在。的更多详细信息数据和时间格式

谢谢你..。

Swift 3

extension Date {
    

func toString(template: String) -> String {
let formatter = DateFormatter()
formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current)
return formatter.string(from: self)
}
    

}

用法

let now = Date()
let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9
let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09
let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09

使用模板以满足您的需要。示例和文档 给你可以帮助您构建所需的模板。

注意

如果您计划在例如 TableView中使用它,那么您可能需要缓存 DateFormatter。 为了给出一个想法,循环超过1000日期采取了我 0.5秒使用上述 toString(template: String)功能,相比之下,0.05秒使用 myFormatter.string(from: Date)