cdts/xdts-ios 3/TreeHole/Code/Gategory/NSString+PYExtension.m
2023-07-27 09:20:00 +08:00

159 lines
4.8 KiB
Objective-C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// NSString+Extension.m
// 新浪微博
//
// Created by 谢培艺 on 15/12/15.
// Copyright © 2015年 iphone5solo. All rights reserved.
//
#import "NSString+PYExtension.h"
@implementation NSString (PYExtension)
- (CGSize)sizeWithMaxWidth:(CGFloat)maxWidth font:(UIFont *)font
{
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
attr[NSFontAttributeName] = font;
return [self boundingRectWithSize:CGSizeMake(maxWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:attr context:nil].size;
}
// 时间转换 秒 -- > 具体日期
+ (NSString *)intervalToDateWithIntervalString:(NSString *)intervalString
{
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[intervalString longLongValue]];
// 格式化时间
NSDateFormatter *dateF = [[NSDateFormatter alloc] init];
dateF.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *dateStr = [dateF stringFromDate:date];
return dateStr;
}
// 时间转换 具体日期 --> 秒数
+ (NSString *)dateToIntervalWithDate:(NSDate *)date
{
NSTimeInterval time = [[NSDate date] timeIntervalSince1970];
long long int dateStr = (long long int)time;
return [NSString stringWithFormat:@"%lld", dateStr];
}
+ (NSString *)dayStringFromInterval:(NSTimeInterval)time
{
NSDate *date = [NSDate dateWithTimeIntervalSince1970:time];
// 格式化时间
NSDateFormatter *dateF = [[NSDateFormatter alloc] init];
dateF.dateFormat = @"yyyy-MM-dd";
NSString *dateStr = [dateF stringFromDate:date];
return dateStr;
}
/**
* 用于首页时间显示(刚刚、几分钟前、昨天...
*/
- (NSString *)dateToNowWithDate:(NSDate *)createDate
{
// 转为发表时间
// NSDate *time = [NSDate dateWithTimeIntervalSince1970:[self longLongValue]];
// NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// // 如果是真机调试转换这种欧美时间需要设置locale
// fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
//
// // 设置日期格式(声明字符串里面每个数字和单词的含义)
// // E:星期几
// // M:月份
// // d:几号(这个月的第几天)
// // H:24小时制的小时
// // m:分钟
// // s:秒
// // y:年
//// fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
// fmt.dateFormat = @"yyyy-MM-dd";
// // _createAt = @"Tue Sep 30 17:06:25 +0800 2014";
if ([self isThisYear:createDate]) { // 今年
if ([self isYesterday:createDate]) { // 昨天
return @"昨日";
} else if ([self isToday:createDate]) { // 今天
return @"今日";
} else { // 今年的其他日子
return nil;
}
} else { // 非今年
return nil;
}
}
/**
* 判断是否为今天
*/
- (BOOL)isToday:(NSDate *)time
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd";
NSString *dateStr = [fmt stringFromDate:time];
NSString *nowDateStr = [fmt stringFromDate:[NSDate date]];
NSDate *date = [fmt dateFromString:dateStr];
NSDate *now = [fmt dateFromString:nowDateStr];
// 比较时间差
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmp = [calendar components:unit fromDate:date toDate:now options:0];
return cmp.year == 0 && cmp.month == 0 && cmp.day == 0;
}
/**
* 判断是否为今年
*/
- (BOOL)isThisYear:(NSDate *)time
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy";
NSString *dateStr = [fmt stringFromDate:time];
NSString *nowDateStr = [fmt stringFromDate:[NSDate date]];
NSDate *date = [fmt dateFromString:dateStr];
NSDate *now = [fmt dateFromString:nowDateStr];
// 比较时间差
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear;
NSDateComponents *cmp = [calendar components:unit fromDate:date toDate:now options:0];
return cmp.year == 0;
}
/**
* 判断是否为昨天
*/
- (BOOL)isYesterday:(NSDate *)time
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd";
NSString *dateStr = [fmt stringFromDate:time];
NSString *nowDateStr = [fmt stringFromDate:[NSDate date]];
NSDate *date = [fmt dateFromString:dateStr];
NSDate *now = [fmt dateFromString:nowDateStr];
// 比较时间差
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *cmp = [calendar components:unit fromDate:date toDate:now options:0];
return cmp.year == 0 && cmp.month == 0 && cmp.day == 1;
}
@end