如何快速将 NSString 对象转换为 NSDate?

发布于 2024-12-06 15:17:00 字数 105 浏览 1 评论 0原文

我尝试从从 sqlite 获取的 NSString 获取 NSDate 对象,但存在时间问题。我每次都需要130ms。我有两百个物体要处理,这是难以忍受的。那么有人可以告诉我我应该做什么吗?谢谢。

I try to get NSDate objects from NSString which I get from sqlite, but there is a time problem. I takes me 130ms every time. And it's insufferable for i have two hundred objects to deal with. So can somebody tell me what i should do. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

々眼睛长脚气 2024-12-13 15:17:00

假设您使用的是 NSDateFormatter,您应该遵循 Apple 的建议,缓存格式化程序以提高效率。您应该保留 NSDateFormatter 的单个实例,而不是每次要转换日期时都创建一个 NSDateFormatter。来自 数据格式指南

提高效率的缓存格式化程序

创建日期格式化程序并不是一项廉价的操作。如果你有可能
要经常使用格式化程序,缓存通常会更有效
单个实例而不是创建和处置多个实例。
一种方法是使用静态变量。

Assuming you're using NSDateFormatter, you should attend to Apple's recommendation, caching formatters for efficiency. Instead of creating a NSDateFormatter each time you want to convert a date, you should keep a single instance of your NSDateFormatter. From Data Formatting guide:

Cache Formatters for Efficiency

Creating a date formatter is not a cheap operation. If you are likely
to use a formatter frequently, it is typically more efficient to cache
a single instance than to create and dispose of multiple instances.
One approach is to use a static variable.

俯瞰星空 2024-12-13 15:17:00
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss:SSS"];
     NSDate *currentdate=[formatter dateFromString:currentdateStr];
 //it returns DateObject If String in Specified Format otherwise Returns nil;
    NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"HH:mm:ss:SSS"];
     NSDate *currentdate=[formatter dateFromString:currentdateStr];
 //it returns DateObject If String in Specified Format otherwise Returns nil;
染柒℉ 2024-12-13 15:17:00

我认为这个代码块会对您有所帮助:

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"<Add Your Date Format>"];

        NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

        NSDateComponents *dateComponent = [calendar components:NSYearCalendarUnit
                                        |NSMonthCalendarUnit
                                        |NSDayCalendarUnit 
                                        fromDate:[dateFormatter dateFromString: <Add Your Date String> ]];

        [dateComponent setHour:24];
        [dateComponent setMinute:00];
        [dateComponent setSecond:00];

        <Your NSDate Object> = [calendar dateFromComponents:dateComponent];

它可能需要根据您的日历时间更改小时、分钟、秒的 dateComponent 值。

如果您在这方面遇到任何问题,请告诉我..

I think this code block will help you :

        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"<Add Your Date Format>"];

        NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

        NSDateComponents *dateComponent = [calendar components:NSYearCalendarUnit
                                        |NSMonthCalendarUnit
                                        |NSDayCalendarUnit 
                                        fromDate:[dateFormatter dateFromString: <Add Your Date String> ]];

        [dateComponent setHour:24];
        [dateComponent setMinute:00];
        [dateComponent setSecond:00];

        <Your NSDate Object> = [calendar dateFromComponents:dateComponent];

It might require to change dateComponent values for Hour, Minute, Seconds - according to your calendar time.

Let me know if you face any problem in this..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文