日常開發中經常會遇到查詢昨天中午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;
}
很簡單 關鍵點就在於直接用時間戳減去秒數~