繁体   English   中英

如何将格式为 HH:MM:SS 的字符串转换为 NSDate?

[英]How to convert string with format HH:MM:SS into NSDate?

从 json 响应中以字符串格式 HH:MM:SS 存储的时间。 我想将其转换为 NSDate 以进行本地通知。 试过 NSString *datestr = @"21:00:00";

NSDateFormatter *dateformat = [[NSDateFormatter alloc]init];

[dateformat setDateFormat:@"hh:mm:ss"];
NSDate *date = [dateformat dateFromString:datestr];



NSLog(@"time is %@",date);

获得空时间。 我有来自 json 的时间格式是 21:00:00 格式,只有没有日期。 我想每天为本地通知设置这个时间。

如果字符串的小时部分范围从 0 到 23,则需要使用HH该站点有一个方便的日期格式化程序代码列表。

然后您需要将日期转换为NSDateComponents以便您可以创建一个UNCalendarNotificationTrigger

@implementation ViewController {
    NSDateFormatter *parser;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    parser = [[NSDateFormatter alloc] init];
    parser.dateFormat = @"HH:mm:ss";
    parser.calendar = [NSCalendar autoupdatingCurrentCalendar];
}

- (void)createRepeatingNotificationAtTimeOfDay:(NSString *)timeOfDay {
    NSDate *date = [parser dateFromString:timeOfDay];
    if (date == nil) {
        // Couldn't parse the string.
        return;
    }

    NSDateComponents *components = [parser.calendar components:NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:date];
    if (components == nil) {
        // Couldn't extract components.
        return;
    }

    UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:components repeats:YES];
    UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
    content.title = @"Daily alarm";
    UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"dailyalarm" content:content trigger:trigger];
    [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:nil];
}

暂无
暂无

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

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