【问题标题】:Get date from UTC string从 UTC 字符串获取日期
【发布时间】:2020-03-27 18:56:35
【问题描述】:

在这里,当我尝试将该字符串转换为它变为空的日期时,我得到了一个字符串格式的日期。如何直接从下面的函数中获取日期。

-(NSString *)getLocalDateTimeFromUTC:(NSString *)strDate
    {
    // create dateFormatter with UTC time format
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"]; //@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    NSDate *date = [dateFormatter dateFromString:strDate]; // create date from string

    // change to a readable time format and change to local time zone
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSString *timestamp = [dateFormatter stringFromDate:date];
    [dateFormatter setDateFormat:@"dd-MM-yyyy"];
    NSDate *date2 = [dateFormatter dateFromString:timestamp];
    NSLog(@"%@", date2); //Mon Dec  2 00:00:00 2019. wrong formate
    return [dateFormatter stringFromDate:date];
}

【问题讨论】:

  • 我正在获取日期字符串 (03-12-2019)
  • 我想在 NSDate 中而不是在字符串中
  • 能否更正一下
  • 我再次尝试像这样转换它 'NSString *timestamp = [dateFormatter stringFromDate:date]; [dateFormatter setDateFormat:@"dd-MM-yyyy"]; NSDate *date2 = [dateFormatter dateFromString:timestamp]; NSLog(@"%@", date2);'但是弄错了日期。 (2019 年 12 月 3 日星期二 00:00:00)
  • 你的输入字符串是什么

标签: ios objective-c cocoa-touch nsdate nsdateformatter


【解决方案1】:

转换回日期无关紧要。删除线条。

并始终将语言环境设置为固定值 (en_US_POSIX)

-(NSString *)getLocalDateTimeFromUTC:(NSString *)strDate
    {
    // create dateFormatter with UTC time format
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ"; //@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ"
    dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
    NSDate *date = [dateFormatter dateFromString:strDate]; // create date from string

    // change to a readable time format and change to local time zone
    dateFormatter.dateFormat = @"dd-MM-yyyy";
    dateFormatter.timeZone = [NSTimeZone localTimeZone];
    NSString *timestamp = [dateFormatter stringFromDate:date];
    NSLog(@"%@", timestamp); 
    return timestamp;
}

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 2020-01-08
    • 2018-05-25
    • 1970-01-01
    • 2021-04-19
    • 2021-08-14
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多