一个显示日期的工具类

一个显示日期的工具类

.h文件

#import <Foundation/Foundation.h>@interface TimeUtil : NSObject+ (NSString*)getTimeStr1:(long long)time;+(NSString*) getTimeStrStyle1:(long long)time;
+ (NSString*)getTimeStr1Short:(long long)time;+(NSString*) getTimeStrStyle2:(long long)time;+(int)dayCountForMonth:(int)month andYear:(int)year;+(BOOL)isLeapYear:(int)year;@end

.m文件

#import "TimeUtil.h"@implementation TimeUtil+ (NSString*)getTimeStr:(long) createdAt
{// Calculate distance time string//NSString *timestamp;time_t now;time(&now);int distance = (int)difftime(now, createdAt);if (distance < 0) distance = 0;if (distance < 60) {timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "second ago" : "seconds ago"];}else if (distance < 60 * 60) {distance = distance / 60;timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ?

"minute ago" : "minutes ago"]; } else if (distance < 60 * 60 * 24) { distance = distance / 60 / 60; timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "hour ago" : "hours ago"]; } else if (distance < 60 * 60 * 24 * 7) { distance = distance / 60 / 60 / 24; timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "day ago" : "days ago"]; } else if (distance < 60 * 60 * 24 * 7 * 4) { distance = distance / 60 / 60 / 24 / 7; timestamp = [NSString stringWithFormat:@"%d %s", distance, (distance == 1) ? "week ago" : "weeks ago"]; } else { static NSDateFormatter *dateFormatter = nil; if (dateFormatter == nil) { dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateStyle:NSDateFormatterShortStyle]; [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; } NSDate *date = [NSDate dateWithTimeIntervalSince1970:createdAt]; timestamp = [dateFormatter stringFromDate:date]; } return timestamp; } + (NSString*)getTimeStr1:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d %02d:%02d",[component year],[component month],[component day],[component hour],[component minute]]; return string; } + (NSString*)getTimeStr1Short:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; NSString * string=[NSString stringWithFormat:@"%04d-%02d-%02d",[component year],[component month],[component day]]; return string; } + (NSString*)getMDStr:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; NSString * string=[NSString stringWithFormat:@"%d月%d日",[component month],[component day]]; return string; } +(NSDateComponents*) getComponent:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; return component; } +(NSString*) getTimeStrStyle1:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; int year=[component year]; int month=[component month]; int day=[component day]; int hour=[component hour]; int minute=[component minute]; NSDate * today=[NSDate date]; component=[calendar components:unitFlags fromDate:today]; int t_year=[component year]; NSString*string=nil; long long now=[today timeIntervalSince1970]; long long distance=now-time; if(distance<60) string=@"刚刚"; else if(distance<60*60) string=[NSString stringWithFormat:@"%lld分钟前",distance/60]; else if(distance<60*60*24) string=[NSString stringWithFormat:@"%lld小时前",distance/60/60]; else if(distance<60*60*24*7) string=[NSString stringWithFormat:@"%lld天前",distance/60/60/24]; else if(year==t_year) string=[NSString stringWithFormat:@"%02d-%02d %d:%02d",month,day,hour,minute]; else string=[NSString stringWithFormat:@"%d-%d-%d",year,month,day]; return string; } +(NSString*) getTimeStrStyle2:(long long)time { NSDate * date=[NSDate dateWithTimeIntervalSince1970:time]; NSCalendar * calendar=[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar]; NSInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit|NSYearCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSWeekCalendarUnit|NSWeekdayCalendarUnit; NSDateComponents * component=[calendar components:unitFlags fromDate:date]; int year=[component year]; int month=[component month]; int day=[component day]; int hour=[component hour]; int minute=[component minute]; int week=[component week]; int weekday=[component weekday]; NSDate * today=[NSDate date]; component=[calendar components:unitFlags fromDate:today]; int t_year=[component year]; int t_month=[component month]; int t_day=[component day]; int t_week=[component week]; NSString*string=nil; if(year==t_year&&month==t_month&&day==t_day) { if(hour<6&&hour>=0) string=[NSString stringWithFormat:@"凌晨 %d:%02d",hour,minute]; else if(hour>=6&&hour<12) string=[NSString stringWithFormat:@"上午 %d:%02d",hour,minute]; else if(hour>=12&&hour<18) string=[NSString stringWithFormat:@"下午 %d:%02d",hour,minute]; else string=[NSString stringWithFormat:@"晚上 %d:%02d",hour,minute]; } else if(year==t_year&&week==t_week) { NSString * daystr=nil; switch (weekday) { case 1: daystr=@"日"; break; case 2: daystr=@"一"; break; case 3: daystr=@"二"; break; case 4: daystr=@"三"; break; case 5: daystr=@"四"; break; case 6: daystr=@"五"; break; case 7: daystr=@"六"; break; default: break; } string=[NSString stringWithFormat:@"周%@ %d:%02d",daystr,hour,minute]; } else if(year==t_year) string=[NSString stringWithFormat:@"%d月%d日",month,day]; else string=[NSString stringWithFormat:@"%d年%d月%d日",year,month,day]; return string; } +(int)dayCountForMonth:(int)month andYear:(int)year { if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) { return 31; }else if(month==4||month==6||month==9||month==11){ return 30; }else if([self isLeapYear:year]){ return 29; }else{ return 28; } } +(BOOL)isLeapYear:(int)year { if (year%400==0) { return YES; }else{ if (year%4==0&&year%100!=0) { return YES; }else{ return NO; } } } @end



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【leetcode】Median of Two Sorted Arrays

题目简述&#xff1a; There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (mn)). 解题思路&#xff1a; 这本身是个很简单的题目&#xff0c;但是题目要求他的复…

C++从0到1的入门级教学(五)——字符串、向量和数组

文章目录5 字符串、向量和数组5.1 命名空间5.2 标准库string5.2.1 定义和初始化string对象5.2.2 string对象上的操作5.2.2.1 读取string对象5.2.2.2 风格5.2.2.3 使用getline读取一整行5.2.2.4 empty和size操作5.2.2.5 size_type类型5.2.2.6 比较string对象5.2.2.7 string对象的…

媒体格式分析之flv -- 基于FFMPEG

本来是应该先写一个媒体文件格式的简单讲解的&#xff0c;还没来得及写&#xff0c;以后再写。今天就先根据ffmpeg的flv.c的flv_demux这个结构体来讲解一下当前比较流行的媒体格式flv. FLV 是FLASH VIDEO的简称&#xff0c;FLV流媒体格式是随着Flash MX的推出发展而来的视频格式…

Linux命令整合之find

描述Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。用法find 路径 -命令参数 [输出形式]参数说明路径&#xff1a;告诉find在哪儿去找你要的东西&#xff0c;命令参数&#xff1a;参数很多下面会说到输出形式&#xff1a;输出形式很多&#xff0c;-print,…

[HEOI2015]兔子与樱花

题目描述 很久很久之前&#xff0c;森林里住着一群兔子。有一天&#xff0c;兔子们突然决定要去看樱花。兔子们所在森林里的樱花树很特殊。樱花树由n个树枝分叉点组成&#xff0c;编号从0到n-1&#xff0c;这n个分叉点由n-1个树枝连接&#xff0c;我们可以把它看成一个有根树结…

C++从0到1的入门级教学(三)——表达式和运算符

文章目录3 运算符3.1 表达式3.1.1 基本概念3.1.2 运算符和运算对象3.1.3 运算对象的转换3.1.4 左值和右值3.2 运算符3.2.1 算术运算符3.2.2 赋值运算符3.2.3 比较运算符3.2.4 逻辑运算符3.2.5 成员访问运算符3.2.6 条件运算符3 运算符 C提供了一套供操作内置数据类型的运算符&…

谈谈用SQLite和FMDB而不用Core Data

谈谈用SQLite和FMDB而不用Core Data 发布于&#xff1a;2014-04-22 11:22阅读数&#xff1a;4235 凭良心讲&#xff0c;我不能告诉你不去使用Core Data。它不错&#xff0c;而且也在变好&#xff0c;并且它被很多其他Cocoa开发者所理解&#xff0c;当有新人加入你的组或者需要别…

Idea工具开发 SpringBoot整合JSP(毕设亲测可用)

因为&#xff0c;临近毕业了&#xff0c;自己虽然也学了很多框架。但是&#xff0c;都是在别人搭建好的基础上进行项目开发。但是springboot的官方文档上明确指出不提倡使用jsp进行前端开发&#xff0c;但是在校期间只学了jsp作为前端页面。所以&#xff0c;废话不多说&#xf…

深度学习番外——Yolov5服务器环境搭建

文章目录1 服务器搭建yolov5环境1.1 创建环境1.2 跟随官方指引2 下载预训练权重3 推理4 测试1 服务器搭建yolov5环境 1.1 创建环境 首先先的在本地环境下搭建一个我们的环境&#xff0c;名字设为yolo5-6 conda create -n yolov5-6 python3.7#创建环境 conda activate yolov5…

计算球体积

Problem Description 根据输入的半径值&#xff0c;计算球的体积。Input 输入数据有多组&#xff0c;每组占一行&#xff0c;每行包括一个实数&#xff0c;表示球的半径。Output 输出对应的球的体积&#xff0c;对于每组输入数据&#xff0c;输出一行&#xff0c;计算结果保留三…

机器学习实战(一)——员工离职预测

文章目录员工离职预测——逻辑回归的应用1 读取文件2 独热编码3 划分数据集4 归一化5 逻辑回归预测6 模型预测及评估员工离职预测——逻辑回归的应用 开始这个案例之前&#xff0c;请先点击这里的数据集进行下载&#xff1a;HR_comma_sep.zip - 蓝奏云 (lanzout.com) 1 读取文…

Mac版Anaconda安装Tweepy包

Anaconda官网给出的tweepy包安装方法&#xff1a;https://anaconda.org/conda-forge/tweepy 查阅Anaconda官方文档&#xff0c;可以通过以下控制台命令安装Tweepy包。 conda install -c conda-forge tweepy 在控制台执行后&#xff0c;系统可能会提示未找到conda指令&#xff…

iOS 证书与签名 解惑详解

iOS 证书与签名 解惑详解 分类&#xff1a; iPhone2012-06-06 19:57 9426人阅读 评论(1) 收藏 举报iosxcodecryptographyappleiphone测试目录(?)[] 教程截图&#xff1a; 下面是一篇有澳洲墨尔本的一名全职iOS开发者提供的文章。他在论坛上是一个很摩登的年轻人 – Adam Eberb…

Julia学习笔记(一)——入门

文章目录1 入门1.1 启动与退出1.1.1 启动1.1.2 退出1.2 编译文件1.3 变量1.3.1 基本介绍1.3.2 重定义1.3.3 变量名合法性1 入门 1.1 启动与退出 1.1.1 启动 在没有任何IDE的帮助下&#xff0c;使用cmd启动黑窗口来尝试julia是一种最简单的方法。我们称进入julia后的黑窗口为…

从地址栏中敲入一个网址,到网页显示出来,这个过程经历了什么

这个问既考察技术深度又考察技术广度&#xff0c;其实要答好是相当难的。 在地址栏中敲入一个网址后&#xff0c;浏览器向服务器发出请求&#xff0c;请求对应网址页面的内容&#xff1b;然后服务器收到请求以后对这个请求进行处理&#xff0c;处理之后以HTML文件的形式把处理结…

mac上nginx静态页面访问403

第一天配置好的nginx可以正常的访问静态页面&#xff0c;第二天通过网络云盘下载的index.html文件之后&#xff0c;再次访问出现了403forbidden的问题。 查看文件的权限&#xff1a; -rwxr-x--x 1 hu staff 6351 4 12 21:10 bluePlan.js -rwxr-x--x 1 hu staff 113 4 12…

PHP JSON 操作总结

PHP JSON 操作总结 原文:PHP JSON 操作总结由于JSON可以在很多种程序语言中使用&#xff0c;所以我们可以用来做小型数据中转&#xff0c;如&#xff1a;PHP输出JSON字符串供JavaScript使用等。在PHP中可以使用 json_decode() 由一串规范的字符串解析出 JSON对象&#xff0c;使…

Linux学习宝典

文章目录1 虚拟机1.1 简介1.2 Linux版本1.2.1 内核1.2.2 发行版1.3 文件和目录1.3.1 单用户操作系统和多用户操作系统1.3.2 window文件系统1.3.3 Linux下的文件系统2 概述2.1 为什么要学习命令2.2 一些基本操作和说明3 指令和选项4 基础指令4.1 ls指令4.1.1 讲解4.1.2 选项4.1.…

《华为工作法读后感》

开篇 首先不得不说《华为工作法》是一本很好的书籍。感谢我们领导的照顾和用心&#xff0c;才使得我们又有了一些对社会 对工作 对生活等等的认知 。 之前的我是不怎么读书的&#xff0c;因为个人原因读的慢&#xff0c;每句话都要了解其中寓意之后才继续读下去,还有就是工作…

Redis发布与订阅——PUBLISH SUBSCRIBE

2019独角兽企业重金招聘Python工程师标准>>> &#xfeff;Redis发布与订阅——PUBLISH & SUBSCRIBE 一般来说&#xff0c;发布与订阅&#xff08;又称pub/sub&#xff09;的特点是订阅者&#xff08;listener&#xff09;负责订阅频道&#xff08;channel&…