首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCalendar currentCalendar不工作

NSCalendar currentCalendar不工作
EN

Stack Overflow用户
提问于 2016-11-15 07:00:00
回答 3查看 1.2K关注 0票数 2

在我的项目里。我希望在我的项目中用户更改日历。如果用户选择日文日历,则在我的项目中用日文日历格式显示日期。如果用户选择Gregorian,则日期显示为Gregorian格式。所以我使用了下面的类文件。

这是myclass.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>

@interface util : NSObject

+ (NSString *)getTrimedString:(NSString *)str;

+(NSDate*)convertStringToDate:(NSString*)baseString;
+(NSString*)dateToYMD:(NSDate*)date;
+(NSString*)dateToMDHM:(NSDate*)date;
+(NSString*)dateToYMDHM:(NSDate*)date;

+(NSString*)dateToHM:(NSDate*)date;
+(NSString*)convertStringToMDHM:(NSString*)baseString;

+(UILabel*)createWorkLblWord:(NSString*)baseText;
+(UILabel*)createWorkLblWord:(NSString*)baseText widths:(NSInteger)width fontSize:(NSInteger)size;

+(float)systemVersionFloat;

@end


+(NSString*)dateToYMDHM:(NSDate*)date{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

这是myclass.m

代码语言:javascript
复制
#import "util.h"

@implementation util

+(NSString*)dateToYMDHM:(NSDate*)date{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];



NSCalendar *usercalendar = [NSCalendar currentCalendar];

[formatter setCalendar:usercalendar];

NSLog(@"Current Auto Calendar : %@",[[NSCalendar autoupdatingCurrentCalendar] calendarIdentifier]);
NSLog(@"current calendar: %@", [[NSCalendar currentCalendar] calendarIdentifier]);

[formatter setDateFormat:@"yyyy/MM/dd\nH:mm"];
    return [formatter stringFromDate:date];
}

但是结果只是显示Gregorian日期格式。即使用户选择日本日历或佛教日历,我的项目只显示公历格式日期。我怎么才能解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2016-11-15 09:34:32

解决我的问题的答案不是编码错误。在计划选项中这是错误的。我在Xcode产品菜单中将我的应用程序区域更改为系统区域,>>方案、>>编辑方案、>>选项卡。Mr.Andrew Romanov救了我。非常感谢Mr.Andrw Romanov

这是我的“计划选项截图”。

票数 1
EN

Stack Overflow用户

发布于 2016-11-15 07:20:30

当前日历选择默认的日历,而不是使用[NSCalendar currentCalendar]尝试使用标识符

格里高利[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

佛教徒`[NSCalendar allocinitWithCalendarIdentifier: NSBuddhistCalendar];

票数 0
EN

Stack Overflow用户

发布于 2016-11-15 07:23:19

currentCalendar它是来自当前地区的日历,用户可以在手机的设置中进行更改。

如果要允许用户更改应用程序中的日历,请执行以下操作。您应该使用calendarWithIdentifier方法创建所需的日历。

您还可以订阅NSCurrentLocaleDidChangeNotification,并更新UI。

这里的所有代码:

代码语言:javascript
复制
@interface ViewController ()

- (IBAction)printCurrentCalendar:(id)sender;
- (void)localeChangedNotification:(NSNotification*)notification;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(localeChangedNotification:) name:NSCurrentLocaleDidChangeNotification object:nil];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


#pragma mark Actions
- (IBAction)printCurrentCalendar:(id)sender
{
    NSCalendar* calendar = [NSCalendar currentCalendar];
    NSLog(@"calendar from currentCalendar: %@", calendar.calendarIdentifier);

    NSCalendar* localeCalendar = [NSCalendar calendarWithIdentifier:[NSLocale currentLocale].calendarIdentifier];
    NSLog(@"calendar from locale: %@",  localeCalendar.calendarIdentifier);
}


- (void)localeChangedNotification:(NSNotification*)notification
{
    NSLog(@"locale changed");
}

@end

产出:

currentCalendar的日历1289:74644:格雷戈里安的日历1289:74644 宪兵队检查1289:74644地区更改 日历1289:74644来自currentCalendar的日历:日本宪兵队1289:74644

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40603859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档