iOS 本地时间、UTC时间、时间戳等操作、获取当前年月日

时间:2025-02-27 17:05:08
//获得当前时间并且转为字符串
- (NSString *)dateTransformToTimeString
{
NSDate *currentDate = [NSDate date];//获得当前时间为UTC时间 2014-07-16 07:54:36 UTC (UTC时间比标准时间差8小时)
//转为字符串
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];
return timeString;
}

//获取当前时间转为时间戳
- (NSString *)dateTransformToTimeSp
{
UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*;//客户端当前13位毫秒级时间戳
NSString *timeSp = [NSString stringWithFormat:@"%llu",recordTime];//时间戳转字符串(13位毫秒级时间戳字符串)
return timeSp;
}
 //时间戳字符串1469193006001(毫秒)1469193006.001(毫秒,1469193006001234(微秒)1469193006.001234(微秒)转 UTC时间2016-08-11T07:00:55.611Z
- (NSString *)timespToUTCFormat:(NSString *)timesp
{
NSString *timeString = [timesp stringByReplacingOccurrencesOfString:@"." withString:@""];
if (timeString.length >= ) {
NSString *second = [timeString substringToIndex:];
NSString *milliscond = [timeString substringFromIndex:];
NSString * timeStampString = [NSString stringWithFormat:@"%@.%@",second,milliscond];
NSTimeInterval _interval=[timeStampString doubleValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
NSString *dateString = [dateFormatter stringFromDate:date]; return dateString;
}
return @"";
}

//13位时间戳1469193006001(毫秒)转 系统时间2016-08-11 08:55:36
 + (NSString *)timespToYMDFormat:(NSNumber *)timesp
{
NSString *stime = [timesp stringValue];
NSTimeInterval time = [[stime substringToIndex:] doubleValue];
NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; return [dateFormatter stringFromDate: detaildate];
}


//            时间转时间戳的方法:sendDate为NSDate类
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[sendDate timeIntervalSince1970]];

//12-5-11添加

如果只获取当前的年月日,用NSDate 直接截取是不对的,以下方法提供了获取当前的年月日等等

 // 获取代表公历的NSCalendar对象
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
// 获取当前日期
// 定义一个时间字段的旗标,指定将会获取指定年、月、日、时、分、秒的信息
unsigned unitFlags = NSCalendarUnitYear |
NSCalendarUnitMonth | NSCalendarUnitDay |
NSCalendarUnitHour | NSCalendarUnitMinute |
NSCalendarUnitSecond | NSCalendarUnitWeekday;
// 获取不同时间字段的信息
NSDateComponents* comp = [gregorian components: unitFlags
fromDate:localeDate];
NSInteger year = comp.year; //下面是可以获取的内容 //
@property NSInteger era;
@property NSInteger year;
@property NSInteger month;
@property NSInteger day;
@property NSInteger hour;
@property NSInteger minute;
@property NSInteger second;
@property NSInteger nanosecond NS_AVAILABLE(10_7, 5_0);
@property NSInteger weekday;
@property NSInteger weekdayOrdinal;
@property NSInteger quarter NS_AVAILABLE(10_6, 4_0);
@property NSInteger weekOfMonth NS_AVAILABLE(10_7, 5_0);
@property NSInteger weekOfYear NS_AVAILABLE(10_7, 5_0);
@property NSInteger yearForWeekOfYear NS_AVAILABLE(10_7, 5_0);