Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想要三个字母格式的月份,但MMM返回带有“quot;M";在iOS UIDatePicker中开始时_Ios_Objective C_Nsdateformatter_Uidatepicker - Fatal编程技术网

我想要三个字母格式的月份,但MMM返回带有“quot;M";在iOS UIDatePicker中开始时

我想要三个字母格式的月份,但MMM返回带有“quot;M";在iOS UIDatePicker中开始时,ios,objective-c,nsdateformatter,uidatepicker,Ios,Objective C,Nsdateformatter,Uidatepicker,这是我的方法,在选择UIDatePicker time时执行: -(void) datePickerAction: (UIDatePicker *)sender { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setLocale:[NSLocale systemLocale]]; [dateFormatter setDateFormat:@"EEE MMM

这是我的方法,在选择UIDatePicker time时执行:

-(void) datePickerAction: (UIDatePicker *)sender {
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[NSLocale systemLocale]];
    [dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss zzzz yyyy"];
    self.dateTextView.text = [dateFormatter stringFromDate:self.datePicker.date];
}
这给我的日期是2009年9月29日星期二10:26:29 GMT+2015年5:30

我希望我的月份以三种字母格式显示,如十月或一月。 令人惊讶的是,如果我注释行
[dateFormatter setLocale:[NSLocale systemLocale]]
然后我用相同的日期格式化程序以正确的方式得到月份,如2015年9月29日星期二10:26:29印度标准时间。请告诉我哪里出了问题


我想要的日期格式示例是
9月29日星期二10:26:29 GMT+2015年05:30

MMM
不使用三个字母的缩写格式。你会得到一个缩写,但它是什么,取决于语言环境。官方Unicode文档中有一个4(!)字母缩写(“Sept”)的示例:

所以你得到什么取决于地点。由于
+systemLocale
提供“无区域设置”

如果不需要任何本地化,请使用系统区域设置

…我想,
NSDateFormatter
根本不知道创建没有区域设置信息的月份缩写。即使这是可能的,也毫无意义,因为没有区域设置的本地化表单应该是什么?斯瓦希里月名和印度缩写


您可能希望使用设备上的用户设置
+currentLocale

最好创建一个函数,以便轻松访问和返回内容

e、 g


我读了一本书后,对我的问题的根本原因几乎一无所知。所以,我实施了一个变通方案,在我的情况下效果非常好。为了获得所需格式的日期,我决定使用两个具有不同语言环境的
NSDateFormatter
,然后从两个格式化程序中追加字符串以获得所需的结果

为了在三个字母的月份中获得月份,我制作了一个
NSDateFormatter
对象 并将其区域设置为
[NSLocale currentLocale]
这给了我三个字母格式的月份名称

为了获取GMT,我创建了另一个
NSDateFormtter
对象,并将其区域设置为
[NSLocale systemLocale]
,这就为我提供了GMT格式

在这之后,我附加了两个字符串,得到了期望的结果。完整的修改代码如下所示:

-(void) datePickerAction: (UIDatePicker *)sender {
    [self.datePicker setLocale:[NSLocale currentLocale]];

    NSDateFormatter *dayMonthDate = [NSDateFormatter new];
    [dayMonthDate setLocale:[NSLocale currentLocale]];
    [dayMonthDate setDateFormat:@"EEE MMM dd HH:mm:ss"];

    NSDateFormatter *gmtAndYearFormatter = [NSDateFormatter new];
    [gmtAndYearFormatter setLocale:[NSLocale systemLocale]];
    [gmtAndYearFormatter setDateFormat:@"zzzz yyyy"];

    self.dateTextView.text = [NSString stringWithFormat:@"%@ %@",
                              [dayMonthDate stringFromDate:self.datePicker.date],
                              [gmtAndYearFormatter stringFromDate:self.datePicker.date]];
}

因此,我得到的结果是
周二9月29日11:58:29 GMT+05:30 2015

我尝试使用
+currentLocale
,它给了我
周二9月29日10:26:29印度标准时间2015
。我想要的日期格式示例是
周二9月29日10:26:29 GMT+05:30 2015
。我在这一点上陷入了困境。内加姆-阿瓦德我想出了一个解决办法。谢谢你的回答给了我清晰的想法,我可以通过它找到一个解决方案!
-(void) datePickerAction: (UIDatePicker *)sender {
    [self.datePicker setLocale:[NSLocale currentLocale]];

    NSDateFormatter *dayMonthDate = [NSDateFormatter new];
    [dayMonthDate setLocale:[NSLocale currentLocale]];
    [dayMonthDate setDateFormat:@"EEE MMM dd HH:mm:ss"];

    NSDateFormatter *gmtAndYearFormatter = [NSDateFormatter new];
    [gmtAndYearFormatter setLocale:[NSLocale systemLocale]];
    [gmtAndYearFormatter setDateFormat:@"zzzz yyyy"];

    self.dateTextView.text = [NSString stringWithFormat:@"%@ %@",
                              [dayMonthDate stringFromDate:self.datePicker.date],
                              [gmtAndYearFormatter stringFromDate:self.datePicker.date]];
}