繁体   English   中英

从字符串日期获取三个字母的月份和日期?

[英]Get three letter month and day from string date?

我有这样的字符串日期,

NSString * dateStr = @"2014-12-31";

我想在三个字母的月份中获得一个月,例如Des (from dateStr)和一天例如31

我尝试了大约2个小时,但我无法正确接收它。

我的代码是..

首先将字符串转换为日期;

NSString *dateStr = [[self.listOfEvents objectAtIndex:indexPath.row] objectForKey:@"EventDate"];
NSDateFormatter *DTFormatter = [[NSDateFormatter alloc] init];
[DTFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *eventDate = [DTFormatter dateFromString:dateStr];
NSLog(@"eventDate - %@", eventDate);

现在将日期转换为字符串;

NSDateFormatter *currentDTFormatter = [[NSDateFormatter alloc] init];
[currentDTFormatter setDateFormat:@"dd MMM"];
NSString *eventDateStr = [DTFormatter stringFromDate:eventDate];
NSLog(@"eventDateStr - %@", eventDateStr);

所以,请给我建议我哪里错了。

编辑:

我得到的控制台输出是

eventDate-2014-12-31 18:30:00 +0000
eventDateStr-2014-12-31

问题是您正在使用旧的dateformatter DTFormatter进行转换,因此必须使用currentDTFormatter代替它。

尝试使用currentDTFormatter此格式化程序。

NSDateFormatter *currentDTFormatter = [[NSDateFormatter alloc] init];
[currentDTFormatter setDateFormat:@"dd MMM"];
NSString *eventDateStr = [currentDTFormatter stringFromDate:eventDate];
NSLog(@"%@", eventDateStr);

尝试添加此行[currentDTFormatter setDateStyle:NSDateFormatterMediumStyle]; 在调用setDateFormat之前

这是来自Apple文档的适当段落:

    NSDateFormatterMediumStyle

    Specifies a medium style, typically with abbreviated text, such as “Nov 23, 1937”.

    Equal to kCFDateFormatterMediumStyle.

    Available in OS X v10.4 and later.

    Declared in NSDateFormatter.h.

这也是在这里说https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1仅使用一个“ d”因此,“ EdMMM”应该适用于英语语言环境,或者我猜“ dMMM”甚至是“ d MMM”

你有没有尝试过:

[formatter setDateFormat:@"dd-MMM-YYYY HH:mm"]; 

接着

[formatter stringFromDate:someNSDate];

这是解决方案

NSString * dateStr = @"2014-12-31";
NSDateFormatter* df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate* date = [df dateFromString:dateStr];
NSLog(@"%@", date);
[df setDateFormat:@"dd MMM"];
NSString *dateString = [df stringFromDate:date];
NSLog(@"%@", dateString);

试用

请尝试使用以下代码转换您的日期字符串...

- (NSString*) formatDateString:(NSString*)date
{
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd"];

NSDate *formattedDate = [inputFormatter dateFromString: date];
NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"dd MMM"];

NSString *displayDate = [NSString stringWithFormat:@"%@", [outputFormatter stringFromDate:formattedDate]];

return displayDate;

}

您还可以将格式样式设置为NSDateFormatter来格式化日期字符串

setTimeStyle:  

setDateStyle:

您可以从下面的链接检查NSDateFormatter以供参考。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM