日常开发中经常会遇到查询昨天中午12点的时间戳的情况,比如我需要查睡眠时间对应的数据,那就需要昨天中午12点到今天中午12点的时间戳,然后到coredata中去查询。看了很多网上的帖子,写的都不会很清楚,有的很麻烦,这里推荐一种简单的方法
NSString *today = [self getCurrentTime];
NSString *todaynoon = [NSString stringWithFormat:@"%@ 12:00:00",today];
NSInteger todayStamp = [self timeSwitchTimestamp:todaynoon andFormatter:@"yyyy-MM-dd HH:mm:ss"];
// NSLog(@"%ld",(long)todayStamp);
NSInteger yesterdayStamp = todayStamp - (24*60*60);
- (NSString *)getCurrentTime {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSString *dateTime = [formatter stringFromDate:[NSDate date]];
return dateTime;
}
-(NSInteger)timeSwitchTimestamp:(NSString *)formatTime andFormatter:(NSString *)format{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:format]; //(@"YYYY-MM-dd hh:mm:ss") ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
[formatter setTimeZone:timeZone];
NSDate* date = [formatter dateFromString:formatTime]; //------------将字符串按formatter转成nsdate
//时间转时间戳的方法:
NSInteger timeSp = [[NSNumber numberWithDouble:[date timeIntervalSince1970]] integerValue];
NSLog(@"将某个时间转化成 时间戳&&&&&&&timeSp:%ld",(long)timeSp); //时间戳的值
return timeSp;
}
很简单 关键点就在于直接用时间戳减去秒数~