gpt4 book ai didi

objective-c - strptime_l 返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:23 24 4
gpt4 key购买 nike

strptime_l 总是返回 null。我在 Objective-C 中这样做。

#import <time.h>
#import <xlocale.h>

/* Later on... */

const char *str = [dateStr UTF8String];
const char *fmt = [@"EE LLLL d HH:mm:ss Z yyyy" UTF8String];
struct tm timeinfo;
memset(&timeinfo, 0, sizeof(timeinfo));
char *ret = strptime_l(str, fmt, &timeinfo, NULL);

NSDate *date = nil;

if (ret) {
time_t time = mktime(&timeinfo);

date = [NSDate dateWithTimeIntervalSince1970:time];
}

ret 始终为空。 dateStr 值的一个示例是:Sat Sep 15 05:52:10 +0000 2012 并且始终采用该格式。

有什么想法吗?

最佳答案

您似乎使用的是 NSDateFormatter 格式而不是 strptime 格式。看看here有关其特定日期和时间格式的更多信息。

下面的代码应该可以工作:

NSString *dateStr = @"Sat Sep 15 05:52:10 +0000 2012";

const char *str = [dateStr UTF8String];
const char *fmt = [@"%a %b %d %H:%M:%S %z %Y" UTF8String];
struct tm timeinfo;
memset(&timeinfo, 0, sizeof(timeinfo));
char *ret = strptime_l(str, fmt, &timeinfo, NULL);

NSDate *date = nil;

if (ret) {
time_t time = mktime(&timeinfo);

date = [NSDate dateWithTimeIntervalSince1970:time];
}

顺便说一下,你可以通过简单地做到这一点来达到同样的效果:

NSString *dateStr = @"Sat Sep 15 05:52:10 +0000 2012";

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"EE LLLL d HH:mm:ss Z yyyy"];
NSDate *date = [dateFormat dateFromString:dateStr];

关于objective-c - strptime_l 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12445863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com