2018-10-30 15:09:03 zuorishu 阅读数 1070

废话不多说,直接上代码!!!

export default {
    //时间格式返回 方法一:
    //data :传过来的时间/时间戳  type:时间返回格式类型 (可自定义)
    formatDate: function(date, type) {
        if (date != undefined) {
            //兼容ios
            if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) || navigator.userAgent.indexOf("Safari") > -1) {
                date = String(date).replace(/\-/g, "/")
            }
            var time = '';
            if (date.indexOf('-') != -1 || date.indexOf('/') != -1) {
                time = new Date(date)
            } else {
                time = new Date(JSON.parse(date))
            }
            var year = time.getFullYear();
            var month = time.getMonth() + 1;
            var date = time.getDate();
            var hours = time.getHours();
            var minutes = time.getMinutes();
            var seconds = time.getSeconds();
            var isTime = '';

            function add0(m) { return m < 10 ? '0' + m : m }
            switch (type) {
                case 'Y-M-D hh:mm:ss':
                    isTime = year + '-' + add0(month) + '-' + add0(date) + ' ' + add0(hours) + ':' + add0(minutes) + ':' + add0(seconds);
                    break;
                case 'M-D hh:mm:ss':
                    isTime = add0(month) + '-' + add0(date) + ' ' + add0(hours) + ':' + add0(minutes) + ':' + add0(seconds);
                    break;
                case 'M-D hh:mm':
                    isTime = add0(month) + '-' + add0(date) + ' ' + add0(hours) + ':' + add0(minutes);
                    break;
                case 'hh:mm:ss':
                    isTime = add0(hours) + ':' + add0(minutes) + ':' + add0(seconds);
                    break;
                case 'hh:mm':
                    isTime = add0(hours) + ':' + add0(minutes);
                    break;
            }
            return isTime;
        }
    },

    //时间格式返回 方法二: (小程序)
    /** 
     * 时间戳转化为年 月 日 时 分 秒 
     * number: 传入时间戳 
     * format:返回格式,支持自定义,但参数必须与formateArr里保持一致 (如:Y-M-D h:m:s)
    */
    formatTimeTwo(number, format) {

      var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
      var returnArr = [];

      var date = new Date(number * 1000);
      returnArr.push(date.getFullYear());
      returnArr.push(formatNumber(date.getMonth() + 1));
      returnArr.push(formatNumber(date.getDate()));

      returnArr.push(formatNumber(date.getHours()));
      returnArr.push(formatNumber(date.getMinutes()));
      returnArr.push(formatNumber(date.getSeconds()));

      for (var i in returnArr) {
        format = format.replace(formateArr[i], returnArr[i]);
      }
      return format;
    }
    

    //时间转时间戳
    timestamp(e) {
        //兼容ios
        return Date.parse(new Date(e)) || Date.parse(new Date(String(e).replace(/\-/g, "/")))
    },
}

 

2015-09-24 14:06:12 lilinoscar 阅读数 152015

IOS项目中会遇到时间转的问题,当从服务端传回时间到客户端,而这个时间确是时间戳,并且是13位,如果是普通的字符串比如“2015-09-24 19:00:000” 这样转化是比较简单,但是时间戳不是这样的,ios生成的时间戳是10位,所以说需要进行转换。以下有几种方式:

第一种:

    NSString * timeStampString = @"1423189125874";
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeStampString doubleValue] / 1000];
    NSLog(@"%f", ([date timeIntervalSince1970] * 1000.0));


第二种:

   NSString * timeStampString = @"1423189125874";
   NSTimeInterval _interval=[[timeStampString substringToIndex:10] doubleValue];
   NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
   NSLog(@"%@", date);


格式化时间:

   NSString * timeStampString = @"1423189125874";
   NSTimeInterval _interval=[timeStampString doubleValue] / 1000.0;
   NSDate *date = [NSDate dateWithTimeIntervalSince1970:_interval];
   NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
   [objDateformat setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
   NSLog(@"%@", [objDateformat stringFromDate: date]);

2016-03-08 11:43:10 Sky_Rain_ 阅读数 692

 13位时间戳转化北京时间

- (NSString *)dataWithStr:(NSString *)str

{

    NSString * data = [NSString stringWithFormat:@"%ld", ([str integerValue] / 1000)];

    NSTimeInterval time=[data doubleValue];

    NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    NSString *currentDateStr = [dateFormatter stringFromDate: detaildate];

    return currentDateStr;

}

oc冒泡排序  

  if (self.times.count != 0) {

        for (NSInteger i = 0; i < self.times.count - 1; i++) {

            for (NSInteger j = 0; j < self.times.count - i - 1; j++) {

                if ([[[self.times objectAtIndex:j]newat]integerValue] < [[[self.times objectAtIndex:j+1]newat]integerValue]) {

                    [self.times exchangeObjectAtIndex:j withObjectAtIndex:j+1];

                }

            }

        }

    }


2016-04-22 16:44:07 u014696025 阅读数 908

iOS-时间戳转时间

  • 众所周知,iOS默认生成的时间戳是10位整数,在调用接口时,如果服务器返回的是时间字符串或者是10位时间戳,转换格式挺方便的,但如果服务器返回的是13位的时间戳,那么就比较麻烦了。

10位时间戳

NSTimeInterval timestamp =  timestampString.doubleValue;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 转换后的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

13位时间戳

  • 如果按照上面的方式转换,就会转换错误!
  • 解决办法如下:

方法一:除以1000,变成10位

NSTimeInterval timestamp =  timestampString.doubleValue / 1000.0;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 转换后的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

方法一:截取字符串,变成10位

NSTimeInterval timestamp =  [timestampString substringToIndex: 10].doubleValue;
NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
// 实例化一个NSDateFormatter对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// 设定时间格式
[dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
// 转换后的字符串
NSString resultStr = [dateFormatter stringFromDate: detaildate];

最终解决方案

#pragma mark - 时间戳→时间
+ (NSString *)formatTimestamp2DateString:(NSString *)timestampString format:(NSString *)formatString {
    if (!timestampString || timestampString.length <= 0) {
        return nil;
    }
    NSTimeInterval timestamp = timestampString.length >= 13 ? timestampString.doubleValue / 1000.0 : timestampString.doubleValue;
    NSDate *detaildate = [NSDate dateWithTimeIntervalSince1970:timestamp];
    // 实例化一个NSDateFormatter对象
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    // 设定时间格式
    [dateFormatter setDateFormat: formatString ?: @"yyyy-MM-dd"];
    return [dateFormatter stringFromDate: detaildate];
}
2017-03-15 17:41:54 bitcser 阅读数 299

新建一个NSObject类

+(NSString *)timeConvert:(NSString *)dataString{
    NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[dataString longLongValue]/1000];
    return [formatter stringFromDate:date];

}

直接调用该方法返回对应日期.

Swift也可以用,直接把.h.m文件导入,在桥接文件里导入,然后就可以调用了

iOS时间戳与北京时间的转换

博文 来自: l2i2j2
没有更多推荐了,返回首页