iOS 时间整理(时间戳)

2019-03-08  本文已影响4人  奔跑吧小蚂蚁

DateTimestamp.h

//
//  DateTimestamp.h
//  WMBTC
//
//  Created by 智创 on 2019/3/8.
//  Copyright © 2019年 智创. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface DateTimestamp : NSObject

/**
 获取当前时间戳有两种方法(以秒为单位)
 
 @return 时间戳
 */
+(NSString *)getNowTimeTimestamp1;

/**
 将某个时间转化成 时间戳(秒)
 
 @param formatTime 时间
 @param format 时间的格式
 @return 时间c戳
 */
+(NSInteger)timeSwitchTimestamp:(NSString *)formatTime andFormatter:(NSString *)format;

/**
 
 将某个 (秒)时间戳转化成 时间
 注意:时间戳为13位时 为“毫秒”时间戳 为10位时为“秒”时间戳
 @param timeString 时间
 
 @return 时间
 */
+ (NSString *)timeWithTimeIntervalString:(NSString *)timeString andFormatter:(NSString *)format;

@end

NS_ASSUME_NONNULL_END

DateTimestamp.m

//
//  DateTimestamp.m
//  WMBTC
//
//  Created by 智创 on 2019/3/8.
//  Copyright © 2019年 智创. All rights reserved.
//

#import "DateTimestamp.h"

@implementation DateTimestamp

/**
 获取当前时间戳有两种方法(以秒为单位) (包含时区的设置)

 @return 时间戳
 */
+(NSString *)getNowTimeTimestamp{
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    
    //设置时区,这个对于时间的处理有时很重要
    
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
    
    [formatter setTimeZone:timeZone];
    
    NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式
    
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
    
    return timeSp;
    
}

/**
 将某个时间转化成 时间戳(秒)

 @param formatTime 时间
 @param format 时间的格式
 @return 时间c戳
 */
+(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/Shanghai"];
    [formatter setTimeZone:timeZone];
    NSDate* date = [formatter dateFromString:formatTime]; //------------将字符串按formatter转成nsdate
    //时间转时间戳的方法:
    NSInteger timeSp = [[NSNumber numberWithDouble:[date timeIntervalSince1970]] integerValue];
    NSLog(@"将某个时间转化成 时间戳&&&&&&&timeSp:%ld",(long)timeSp); //时间戳的值
    return timeSp;
    
}

/**
 将某个 (秒)时间戳转化成 时间
 注意:时间戳为13位时 为“毫秒”时间戳 为10位时为“秒”时间戳
 @param timeString 时间

 @return 时间
 */
+ (NSString *)timeWithTimeIntervalString:(NSString *)timeString andFormatter:(NSString *)format
{
    // 格式化时间
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    formatter.timeZone = [NSTimeZone timeZoneWithName:@"shanghai"];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:format];
    //此时默认时间戳为秒来处理,即10位数的秒时间戳 如果为毫秒则除1000
    NSDate* date = [NSDate dateWithTimeIntervalSince1970:[timeString doubleValue]];
    // 如果时间戳为毫秒值转化为秒
//    NSDate* date = [NSDate dateWithTimeIntervalSince1970:[timeString doubleValue]/ 1000.0];
    NSString* dateString = [formatter stringFromDate:date];
    return dateString;
}

@end

上一篇 下一篇

猜你喜欢

热点阅读