关于dateFromString函数的优化

JavaScript 日期格式化实战:3 种方法实现 YYYY-MM-DD HH:mm:ss 格式 本文详细介绍了JavaScript中实现YYYY-MM-DD HH:mm:ss日期格式化的三种方法,包括原生Date对象的使用、手动拼接字符串以及第三方库date-fns和Day.js的应用。通过对比分析各方案的优缺点和性能数据,帮助开发者选择最适合业务场景的日期处理方案,提升前端开发效率。 阅读详情

在object-C里面,在有关字符串转换成日期时,相信大部分人都会使用NSDateFormatter 的dateFromString,将字符串转换成日期。

但是使用timeProfile一监测,就会发现dateFromString这函数超级耗时。dateFromString用起来简单,几行代码就搞定了,

    -- 将传入时间转化成需要的格式

if (!dateFormatter)

 {

 dateFormatter = [[NSDateFormatter alloc] init];

 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

 }

 NSDate *fromdate=[dateFormatter dateFromString:dateTimeStr];


如果只是偶尔的一次转换还好,但是相对于那些不断刷界面,不断需要转换的来说,确实比较头疼。

琢磨了许久,发现在object-c中找不到更好的优化方法了,然后,把目标转向c++。

object-c中可以写C++的代码,那如果用c++的方法来转换呢?

下面是c++的转换方法:

+(NSDate *)dateFromString:(NSString *)dateTimeStr

{

//NSLog(@"dateFromString:%@",dateTimeStr);

NSArray *array  = [dateTimeStr componentsSeparatedByString:@" "];

NSArray *dateArr = [[array objectAtIndex:0] componentsSeparatedByString:@"-"];

NSArray *timeArr = [[array objectAtIndex:1] componentsSeparatedByString:@":"];

struct tm sourcedate;

    bzero((void*)&sourcedate,sizeof(sourcedate));

    sourcedate.tm_sec = ((NSString *)[timeArr objectAtIndex:2]).intValue;

    sourcedate.tm_min = ((NSString *)[timeArr objectAtIndex:1]).intValue;; 

    sourcedate.tm_hour = ((NSString *)[timeArr objectAtIndex:0]).intValue;

    sourcedate.tm_mday = ((NSString *)[dateArr objectAtIndex:2]).intValue;;

    sourcedate.tm_mon = ((NSString *)[dateArr objectAtIndex:1]).intValue - 1; 

    sourcedate.tm_year = ((NSString *)[dateArr objectAtIndex:0]).intValue - 1970;

    long timeInterval = mktime(&sourcedate);  

//NSLog(@"timeInterval:%ld",timeInterval);

NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval];

//NSLog(@"date:%@",date);

return date;

}

虽然发现代码行比object-c的方法好像多了许多,但是使用timeProfile一监测,一会发现之前耗时排前一二的时间转换方法已经不再你的视线范围内了,再往下翻,你会看到它的数值还是个位数,哈哈~



保姆级教程:用PHPStudy+Miniconda在Windows上为RTX 50系显卡部署AI视频工具链 本文提供了一份详细的教程,指导如何在Windows系统上使用PHPStudy和Miniconda为RTX 50系显卡部署AI视频工具链。通过图形化界面管理环境,支持videolingo和GPT-SoVITS等工具,实现高效的视频处理。教程涵盖环境准备、核心组件安装、工具链部署及常见问题解决方案,适合开发者快速搭建AI开发环境。 阅读详情

相关推荐

智能织梦:基于Rokid AR眼镜的家庭情感记忆增强系统设计与实践

本文介绍了基于Rokid AR眼镜的'智能织梦'系统,通过增强现实技术捕捉和重现家庭情感记忆。系统利用多模态传感器和轻量级情感识别模型,自动记录家庭互动中的情感峰值时刻,并生成沉浸式记忆片段。测试数据显示,该系统显著提升了家庭情感互动的频率和质量,特别适用于多代同堂家庭和记忆唤醒场景。

sre5engineer的博客 536

dateFromString转换时间不准确

在进行时间转换的时候使用dateFromString经常会遇到时间转换不准确的问题,可以尝试使用以下方法进行处理: 1、设置localeWithLocaleIdentifierNSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm";

zww学习笔记 3389

理解ADC:为什么需要抗混叠滤波器?

本文介绍 ADC 的混叠现象,引出抗混叠滤波器,并介绍一种开关电容滤波器,它具有很小的增益过渡带。

疯狂的运放 5937

dateFromstring

+(instancetype)statusDateWithString:(NSString *)string{//string 此时是月份加天 没有年  eg.   1.23     NSDate * date=[NSDate date];       NSString *dateString=[NSString stringWithFormat:@"%@",date];   

listen_to_rain的博客 543

以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

网络设备中肯定离开不MAC和PHY,本篇文章将详细介绍下以太网中一些常见术语与接口。 MAC和PHY结构 从硬件角度来看以太网是由CPU,MAC,PHY三部分组成的,如下图示意: 上图中DMA集成在CPU,CPU,MAC,PHY并不是集成在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积及模拟/数字混合架构的原因,**将MAC集成进CPU而将PHY留在片外,这种...

sternlycore的博客 13万+

高效爬取懂车帝车型数据:从静态解析到动态反爬实战

本文详细解析了如何高效爬取懂车帝车型数据,从静态HTML解析到动态接口反爬的完整实战路径。文章重点介绍了使用浏览器开发者工具定位数据、应对CSS混淆与参数加密等反爬策略,并提供了整合静态与动态抓取逻辑的Python代码示例,帮助开发者稳健地获取结构化车型信息。

wind6的博客 937

dateFromString 函数造成时间差问题

今天调用下边的代码 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviatio

liufangbaishi2014的博客 1482

Windows 10下Gpg4win 4.3.1安装与配置全攻略:从下载到邮件加密实战

本文详细介绍了在Windows 10系统下安装和配置Gpg4win 4.3.1的全过程,包括下载、验证、自定义安装以及密钥管理。特别重点讲解了如何通过Kleopatra证书管理器进行密钥创建和管理,以及在Outlook中实现邮件加密的实战操作,帮助用户全面提升数据安全防护能力。

weixin_29271263的博客 301

iOS 时间转换 datefromstring结果为nil

有时候在iOS开发中会遇到时间转换,下面是我最近遇到的问题: 问题所在: YYYY-MM-dd hh:mm:ss:如果hh小写时间将会跟着系统设置成12小时或者24小时制,如果HH大写,强制为24小时 解决办法: YYYY-MM-dd HH:mm:ss 经过查文档.资料,有时候会用到下门的方法才会有有效: NSDateFormatter* formatter = [[NSDateFormatt...

weixin_34256074的博客 1554

【知识图谱】一文看懂知识图谱的搭建实践与科普教程(5万字完结篇)

所有可能的实体对:(“Mate40”,“华为”), (“Mate40”,“手机”), (“华为”,“手机”)。送入关系模型分类,预期输出 (“Mate40”,“华为”): 品牌, (“Mate40”,“手机”): 属于类别, (“华为”,“手机”): 无关系。,定义了图谱中概念和关系的类型层次结构,相当于知识图谱的“纲领”和“schema”。训练完成后,当模型看到新的句子,比如“苹果的MacBook笔记本性能强大”,识别出实体“苹果”(品牌)和“MacBook”(产品)后,就能正确输出关系“品牌”。

weixin_41645791的博客 2611

SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程-第一篇:ADT安装前置准备与环境校验教程

ABAP Development Tools(ADT)安装配置教程摘要 本文是ADT安装系列的第一篇,重点讲解环境准备与版本校验。ADT是基于Eclipse的现代ABAP开发工具,相比传统SAP GUI提供更智能的开发体验。安装前需确认: 推荐使用Eclipse 2026-03 + Java 21组合 操作系统需Windows 10+/macOS 14+ SAP GUI版本要求Windows≥8.00/macOS≥8.10 后端系统需NetWeaver 7.31 SP04+或S/4HANA 通过java -

baidu_35680696的博客 684

MongoDB聚合运算符:$dateFromString

`$dateFromString`聚合运算符将日期时间字符串转换为日期对象。

superatom01的博客 1593

HMC7044调试指南与FPGA开发

最后,我们介绍了在FPGA开发中使用HMC7044的几个常见应用场景,包括时钟分配、时钟同步、高精度时钟生成和时钟域交叉。根据您的应用需求,您可以选择不同的时钟分配方案,例如使用PLL生成特定频率的时钟信号,或者通过分频器生成较低频率的时钟信号。HMC7044可以提供精确的时钟同步功能,确保各个FPGA板之间的时钟信号保持一致,从而实现可靠的数据传输和协同操作。HMC7044可以实现时钟域之间的交叉,通过生成和分配不同频率的时钟信号,使得不同时钟域的模块能够协同工作。FPGA开发中的HMC7044应用。

CqpFsharp的博客 3610

性能优化之NSDateFormatter

为什么要优化NSDateFormatter?首先,过度的创建NSDateFormatter用于NSDate与NSString之间转换,会导致App卡顿,打开Profile工具查一下性能,你会发现这种操作占CPU比例是非常高的。据官方说法,创建NSDateFormatter代价是比较高的,如果你使用的非常频繁,那么建议你缓存起来,缓存NSDateFormatter一定能提高效率...

weixin_33966365的博客 160

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【腾讯Bugly干货分享】微信读书iOS性能优化

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8“8小时内拼工作,8小时外拼成长”这是大家共同的理想。除了每天忙于工作外,我们都希望能更多地区吸收领域内的新知识与新技能,从而走向人生巅峰。Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工

腾讯Bugly的专栏 3125

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OpenCode架构深度解析:开源AI编程代理的性能优化与分布式部署实践

OpenCode作为一款开源的AI编程代理工具,通过其创新的架构设计和高效的代码生成能力,为开发者提供了企业级的智能编程解决方案。该项目基于现代TypeScript技术栈构建,支持多模型切换和分布式会话管理,实现了高性能的代码生成与智能分析功能。 ## 核心概念:模块化架构与智能代理系统 ### 分布式会话管理架构 OpenCode的核心架构围绕会话(Session)管理系统构建,采用分层设

gitblog_00458的博客 862

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Dynamic库调试秘籍:日志分析与常见错误解决方案终极指南

Dynamic库是Swift开发者的强力工具,让你能够以优雅的方式调用Objective-C隐藏API和私有方法。但在实际使用过程中,调试问题可能会让初学者感到困惑。本文将为你提供完整的Dynamic库调试秘籍,帮助你快速定位和解决常见问题,让你的开发效率提升3倍!🎯 ## 为什么需要Dynamic库调试技巧? Dynamic库通过`@dynamicMemberLookup`和`@dynam

gitblog_01132的博客 414

三个方面解决性能问题的基本思路和方法(微信读书-ios-姚海波;整理:Kiwi)

源于DEV_CLUB的分享会 首先来个大图(电脑端观看,否则显示不清) 发现问题、解决问题和预防问题三个方面 首先,根据个人的开发经验,我不得不承认,当应用发展到一定程度后,性能问题就不可能完全避免。 以往我们总是希望能寻找一种解决性能问题的一劳永逸的方法,其实是不太现实的。所以我们换个思路,如何尽早的发现性能问题,然后解决问题。 在发现问题方面,我们项目也并没有什么高招,主要有两个

花落惊雨辰---要做一个影响身边的人 4049

Dynamic:让Swift优雅调用Objective-C私有API的终极解决方案

🚀 你是否曾经在Swift项目中遇到过需要调用Objective-C私有API的困境?那些隐藏在苹果框架深处的宝藏功能,却因为Swift的类型安全限制而无法触及?今天,我要为你介绍一个革命性的解决方案——Dynamic库!这个神奇的Swift库让你能够以优雅、类型安全的方式调用Objective-C的私有API,彻底告别繁琐的`performSelector`和`NSInvocation`。

gitblog_01137的博客 518

Dynamic库安装与配置详解:Swift Package Manager快速集成指南

Dynamic库是Swift开发者访问私有和隐藏Objective-C API的终极解决方案!本文将为您提供完整的Dynamic库安装与配置指南,帮助您快速掌握这个强大的Swift动态调用工具。Dynamic库利用Swift 5的`@dynamicMemberLookup`和`@dynamicCallable`特性,让您能够以更加优雅和类型安全的方式调用Objective-C API,特别适合在M

gitblog_00790的博客 961

iOS陷阱--NSDateFormatter的线程安全性

经常需要将NSDate和NSString进行互转,一般我们会这么写: NSDate转NSString NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@”yyyy-MM-dd’T’HH:mm:ss”]; [dateFormatter setTime

gaoyuqiang30的博客 1588

IOS面试题---005

1、        应用程序如何省电?                         设备一定的时间内没有检测到触摸事件,系统最初会使屏幕变暗,并最终完全关闭屏幕。大多数开发者都应该让这个定时器打开,但是,游戏和不使用触摸输入的应用程序开发者可以禁用这个定时器,使屏幕在应用程序运行时不会变暗。将共享的UIApplication对象的idleTimerDisabled属性设置为YES,就可以

凯哥的世界你不懂 578

Cargo 设计原则深度解析:兼容性契约、简单性分层与构建工具边界

本文围绕 Cargo 贡献者文档中的《Design Principles》章节,系统讲解 Cargo 作为 Rust 包管理器的核心设计哲学:它如何通过自动化"分发软件的标准任务"来形式化 Rust 工作流,为何刻意不做成通用构建工具,以及它在**向后兼容**与**向前兼容**之间建立的双向契约(涵盖 CLI、`Cargo.toml`、`Cargo.lock`、注册表索引与 API 等持久化层)。

gitblog_00380的博客 401

CADCraft 绘图仪(Plotter)配置详解:PDF/PNG/SVG 输出设备、纸张与打印透明度实践

绘图仪(plotter)是 CADCraft 打印链路里决定“画什么格式、用哪张纸”的核心抽象。本文以 [docs/plotters.md](https://link.gitcode.com/i/321585be1d4f1e431ef516b3be0eade9) 为主线,结合 `crates/doc`、`crates/engine`、`crates/io`、`crates/render` 中的实际

gitblog_00358的博客 471

IOS开发笔记

1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用) 其实在代码里还是可以设置的,那就是删除背景view [[self.searchBar.subviews objectAtIndex:0] removeFromSuperview]; 2,NSDate使用

xfnjlove的专栏 1422
上一篇: 图片的压缩与裁剪
下一篇: 获取视频预览照片
sandy_shell
博客等级 码龄15年 17粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值