gpt4 book ai didi

iphone - 如何在 iPhone 中格式化 SQLite 日期?

转载 作者:行者123 更新时间:2023-12-03 18:32:00 29 4
gpt4 key购买 nike

我知道 SQLite 不支持日期名称和月份名称。我经历过this问题。我为它创建了两个自定义函数。

我从天数转换日期名称的自定义函数:

( %w day of week 0-6 with sunday==0 )

代码:
+(NSString*)dayNameStringFromDayNo:(NSString*)dayNo{
return
([dayNo isEqualToString:@"0"])?@"Sunday":
( ([dayNo isEqualToString:@"1"])?@"Monday":
( ([dayNo isEqualToString:@"2"])?@"Tuesday":
( ([dayNo isEqualToString:@"3"])?@"Wednesday":
( ([dayNo isEqualToString:@"4"])?@"Thursday":
( ([dayNo isEqualToString:@"5"])?@"Friday": @"Saturday"
)
)
)
)
);
}

我从没有字符串的月份获取月份名称的自定义方法:
( %m month: 01-12 )

代码:
+(NSString*)monthNameFromNumber:(NSString*)no{
return ([no isEqualToString:@"01"])?@"January":
( ([no isEqualToString:@"02"])?@"February":
( ([no isEqualToString:@"03"])?@"March":
( ([no isEqualToString:@"04"])?@"April":
( ([no isEqualToString:@"05"])?@"May":
( ([no isEqualToString:@"06"])?@"June":
( ([no isEqualToString:@"07"])?@"July":
( ([no isEqualToString:@"08"])?@"August":
( ([no isEqualToString:@"09"])?@"September":
( ([no isEqualToString:@"10"])?@"October":
( ([no isEqualToString:@"11"])?@"November":@"Decemeber"
)
)
)
)
)
)
)
)
)
);
}

但是日期遵循格式呢
Sat 6th February

如何获得这种输出?我是否必须再次为其创建自定义函数?

最佳答案

你从 SQLite 得到什么日期格式? SQLite 没有 native 日期/时间数据类型,但通常将日期存储为格式为 YYYY-MM-DD HH:MM:SS 的 ISO8601 字符串或 Unix 风格的时间戳。

第一步:获取日期为 NSDate .这是一种方法,使用上面提到的 ISO8601 格式:

// Create a date formatter
NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

// Use the formatter to convert the string you retrieved (from
// SQLite) into an NSDate.
NSDate *theDate = [inputFormatter dateFromString:yourSQLiteString];

// Don't forget to release alloc'ed resources
[inputFormatter release];

如果您的日期存储为 Unix 风格的时间戳,您可以跳过使用输入格式化程序并使用 NSDate dateWithTimeIntervalSince1970:反而。

第二步:将日期转换为字符串:
// Create a date formatter for whatever format you want to output,
// using the formatting patterns from Unicode tr35-6 Appendix F.
outputFormatter = [[NSDateFormatter alloc] init];
[outputFormatter setDateFormat:@"EEE d MMMM"];
NSString *dateString = [dateFormatter stringFromDate:theDate];

// Don't forget to release alloc'ed resources.
[outputFormatter release];

在这个例子中,你会得到一个像 Sat 6 February 这样的字符串。 ,假设用户在英语语言环境中。

引用:
  • Data Formatting Programming Guide for Cocoa: Date Formatters
  • Unicode Standard UTS #35: Appendix F: Date Format Patterns
  • 关于iphone - 如何在 iPhone 中格式化 SQLite 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800785/

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