1

我有一些代码需要一个字符串,将其转换为日期,重新格式化,然后将其作为另一个字符串吐出:

[formatter setDateFormat:@"YYYY'-'MM'-'DD','HH:mm:ss','ZZZ"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
NSDate *date = [formatter dateFromString:combinedString];
[formatter setDateStyle:NSDateFormatterLongStyle];
NSString *finishedString = [formatter stringFromDate:date];

基本上,除了时区外,它工作正常。所有输入字符串都在时区 -0400 中,我希望重新格式化的字符串也处于该时区,但重新格式化的字符串会继续向前转换 4 小时,即使在我添加了该setTimeZone:行之后也是如此。基本上,我根本不想改变时间,我只想重新格式化它,我不明白我做错了什么?

4

2 回答 2

2

这取决于日期来源指定的格式。大多数时候我处理Unix/POSIX格式的日期。然后我使用以下两行代码:

[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];

无论如何,我建议您查看 Apple Developers 网站的以下问答:http: //developer.apple.com/library/ios/#qa/qa1480/_index.html

于 2012-10-07T20:50:14.707 回答
0

斯威夫特

    // Formatter configuration
    let formatter: NSDateFormatter = NSDateFormatter()
    let posix: NSLocale = NSLocale(localeIdentifier: "en_US_POSIX")
    formatter.locale = posix
    formatter.dateFormat = "d.M.y"
    formatter.timeZone = NSTimeZone(name: "UTC")!

    // String to date
    let dateString: String = "1.1.2013"
    let defaultDate: NSDate = formatter.dateFromString(dateString)!
    println("defaultDate: \(defaultDate)")

    self.dateOfBirthUIDatePicker.date = defaultDate
于 2015-04-03T16:54:13.580 回答