iOS 开发中关于时间显示问题(今天/昨天/前天/星期几/具体日期)
来源:互联网 发布:js undefined判断 编辑:程序博客网 时间:2024/05/18 01:08
开发中关于时间显示问题(今天/昨天/前天/星期几/具体日期)
以今天为基准,显示 今天/昨天/前天(昨天12:12)
离今天一周之内的显示 星期几(星期四)
离今天一周之外的显示 具体日期(15-09-05 12:33)
为了直观方便,直接上代码,有注释。(都写在ViewController中,需要的自己可以将方法拿出去封装到工具类中)
// ViewController.m// Test//// Created by chenqianfeng on 15/9/15.// Copyright (c) 2015年 chenqianfeng. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%@",[self format:@"2015年09月1日 12时12分12秒"]); NSLog(@"%@",[self format:@"2015年09月10日 12时12分12秒"]); NSLog(@"%@",[self format:@"2015年09月14日 12时12分12秒"]);}- (NSString *)format:(NSString *)string{ NSDateFormatter *inputFormatter= [[NSDateFormatter alloc] init]; [inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] ]; [inputFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"]; NSDate*inputDate = [inputFormatter dateFromString:string]; NSDateFormatter *outputFormatter= [[NSDateFormatter alloc] init]; [outputFormatter setLocale:[NSLocale currentLocale]]; [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //get date str NSString *str= [outputFormatter stringFromDate:inputDate]; //str to nsdate NSDate *strDate = [outputFormatter dateFromString:str]; //修正8小时的差时 NSTimeZone *zone = [NSTimeZone systemTimeZone]; NSInteger interval = [zone secondsFromGMTForDate: strDate]; NSDate *endDate = [strDate dateByAddingTimeInterval: interval]; //NSLog(@"endDate:%@",endDate); NSString *lastTime = [self compareDate:endDate];// NSLog(@"lastTime = %@",lastTime); return lastTime;}-(NSString *)compareDate:(NSDate *)date{ NSTimeInterval secondsPerDay = 24 * 60 * 60; //修正8小时之差 NSDate *date1 = [NSDate date]; NSTimeZone *zone = [NSTimeZone systemTimeZone]; NSInteger interval = [zone secondsFromGMTForDate: date1]; NSDate *localeDate = [date1 dateByAddingTimeInterval: interval]; //NSLog(@"nowdate=%@\nolddate = %@",localeDate,date); NSDate *today = localeDate; NSDate *yesterday,*beforeOfYesterday; //今年 NSString *toYears; toYears = [[today description] substringToIndex:4]; yesterday = [today dateByAddingTimeInterval: -secondsPerDay]; beforeOfYesterday = [yesterday dateByAddingTimeInterval: -secondsPerDay]; // 10 first characters of description is the calendar date: NSString *todayString = [[today description] substringToIndex:10]; NSString *yesterdayString = [[yesterday description] substringToIndex:10]; NSString *beforeOfYesterdayString = [[beforeOfYesterday description] substringToIndex:10]; NSString *dateString = [[date description] substringToIndex:10]; NSString *dateYears = [[date description] substringToIndex:4]; NSString *dateContent; if ([dateYears isEqualToString:toYears]) {//同一年 //今 昨 前天的时间 NSString *time = [[date description] substringWithRange:(NSRange){11,5}]; //其他时间格式:15-09-01 12:12 NSString *time2 = [[date description] substringWithRange:(NSRange){2,14}]; if ([dateString isEqualToString:todayString]){ dateContent = [NSString stringWithFormat:@"今天%@",time]; return dateContent; } else if ([dateString isEqualToString:yesterdayString]){ dateContent = [NSString stringWithFormat:@"昨天%@",time]; return dateContent; }else if ([dateString isEqualToString:beforeOfYesterdayString]){ dateContent = [NSString stringWithFormat:@"前天%@",time]; return dateContent; }else{ if ([self compareDateFromeWorkTimeToNow:[[date description] substringWithRange:(NSRange){5,11}]]) { //一周之内除了今天昨天前天之外显示星期 return [[self class]weekdayStringFromDate:date]; }else{ //一周之外的显示日期 return time2; } } }else{ return dateString; }}//传入时间字符与今天比较是否在一周之内- (BOOL)compareDateFromeWorkTimeToNow:(NSString *)timeStr{ NSString *todayStr = [self dateTransformToTimeString]; int today = [todayStr substringWithRange:(NSRange){3,2}].intValue; int workTime = [timeStr substringWithRange:(NSRange){3,2}].intValue; if ([[timeStr substringToIndex:2] isEqualToString:[todayStr substringToIndex:2]]) { if (today - workTime <= 6) { return YES; }else{ return NO; } }else{ return NO; }}//获得当前时间并且转为字符串(截取后的)- (NSString *)dateTransformToTimeString{ //获得当前时间 2014-07-16 07:54:36 +0000(NSDate类) NSDate *currentDate = [NSDate date]; //转为字符串 NSDateFormatter*df = [[NSDateFormatter alloc]init];//实例化时间格式类 [df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//格式化 //2014-07-16 07:54:36(NSString类) NSString *timeString = [df stringFromDate:currentDate]; timeString = [timeString substringFromIndex:5]; return timeString;}//传入时间返回星期几+ (NSString*)weekdayStringFromDate:(NSDate*)inputDate{ NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期日", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil]; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"]; [calendar setTimeZone: timeZone]; NSCalendarUnit calendarUnit = NSWeekdayCalendarUnit; NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate]; return [weekdays objectAtIndex:theComponents.weekday];}@end
0 0
- iOS 开发中关于时间显示问题(今天/昨天/前天/星期几/具体日期)
- java时间显示,昨天今天前天
- Android/JAVA 针对时间戳转今天昨天前天,以及刚刚,几分钟的显示
- iOS给个日期 判断今天昨天前天
- iOS如何判断一个日期是否是今天,昨天,前天?
- java判断时点所在时间(昨天,今天,前天)
- js获取日期:前天昨天今天明天
- 判断日期是不是今天/昨天/前天
- [Java]对时间进行格式化:昨天、今天、明天、星期几
- IOS中关于日期,星期几,以及如果更改获取的当前日期的获取问题?
- 格式化日期返回今天,昨天,前天,超过返回日期
- Shell 中取今天、昨天、前天、n天前以及n天后的时间
- 已当天为初始点,获取任何一天日期(...,前天,昨天,今天,明天,后天,.....)
- 用Java实现今天、昨天、前天的日期小例子。
- js获取日期、前天、昨天、今天、明天、后天代码实例
- java根据日期判断 前天,昨天,今天,明天,后天.
- js获取日期:前天、昨天、今天、明天、后天
- js获取日期:前天、昨天、今天、明天、后天
- 局域网中其他电脑访问我的电脑上的apache服务器
- 读取单个图片
- TopCoder SRM 667 Div1 Problem 250 - OrderOfOperations (状压dp)
- 自定义ListView实现仿QQ消息列表滑动item出现删除按钮
- SQL语法优化
- iOS 开发中关于时间显示问题(今天/昨天/前天/星期几/具体日期)
- 正确理解ThreadLocal
- 设计模式之工厂方法模式
- 【KMP】【HDU3746】【最小循环节】
- hdu 5442 Favorite Donut 最小表示法+KMP
- struts2 拦截器
- 【2015/9/15】漫漫大神路——非常精彩的java内存分析
- C 语言程序分区
- Shell 编程小览