【问题标题】:How to Get Date, Hour, Minute and Second in Objective-c from Timestamp "2017-04-30T14:30+00:00(GMT)"?如何从时间戳“2017-04-30T14:30+00:00(GMT)”获取 Objective-c 中的日期、小时、分钟和秒?
【发布时间】:2026-01-21 10:25:02
【问题描述】:

我是 iOS(Objective-c) 编码的新手,我被时间戳卡住了。 我在解析 JSON 时得到时间戳 ie.2017-04-30T14:30+00:00(GMT)。如何从此时间戳获取日期、小时、分钟和秒?我在GMT 中得到这种格式,那么,是否可以将其转换为"IST"?怎么样?

【问题讨论】:

标签: ios objective-c


【解决方案1】:

日期格式模式
日期模式是一个字符串,其中特定字符串在格式化时被替换为日历中的日期和时间数据,或者在解析时用于为日历生成数据。以下是模式中使用的字符,用于显示给定语言环境的适当格式。以下为示例:

- (NSString *)curentDateStringFromDate:(NSDate *)dateTimeInLine withFormat:(NSString *)dateFormat {
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

    [formatter setDateFormat:dateFormat];

    NSString *convertedString = [formatter stringFromDate:dateTimeInLine];

    return convertedString;
}

像下面这样使用它:

NSString *dateString = [self curentDateStringFromDate:[NSDate date] withFormat:@"dd-MM-yyyy"];
NSString *timeString = [self curentDateStringFromDate:[NSDate date] withFormat:@"hh:mm:ss"];
NSString *hoursString = [self curentDateStringFromDate:[NSDate date] withFormat:@"h"];

Foundation framework 中,用于此任务的类(在任一方向)是NSDateFormatter Refer here

下面的代码将 GMT 转换为 IST。

NSString *inDateStr = @"2000/01/02 03:04:05";
NSString *s = @"yyyy/MM/dd HH:mm:ss";

// about input date(GMT)
NSDateFormatter *inDateFormatter = [[NSDateFormatter alloc] init];
inDateFormatter.dateFormat = s;
inDateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSDate *inDate = [inDateFormatter dateFromString:inDateStr];

// about output date(IST)
NSDateFormatter *outDateFormatter = [[NSDateFormatter alloc] init];
outDateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"IST"];
outDateFormatter.dateFormat = s;
NSString *outDateStr = [outDateFormatter stringFromDate:inDate];

// final output
NSLog(@"[in]%@ -> [out]%@", inDateStr, outDateStr);

【讨论】:

  • 感谢@Suresh.D 兄弟的帮助。 GMT 到 IST 已完成,谢谢您的帮助。但我的主要问题仍然是如何从该时间戳中获取日期、小时数。如果我能得到帮助,那将是很大的帮助。
  • @MaulikDesai 更新了我的答案,请去检查,如果你得到答案,请接受。提前致谢。
最近更新 更多