'星期五,2011年3月25日10:16:00 -0700'。
我尝试使用这种格式:'aaa,dd bbb YYYY HH:MM:SS ZHHMM'但它不起作用,过去给我一个约会方式。
创建新日期时,我还需要将其转换为东部时区。它说“+0000”但是那个标准化为什么?
任何帮助表示赞赏, 谢谢, 〜Arash的
答案 0 :(得分:1)
通常,当您获得这样的日期字符串时,您知道它们来自哪个区域设置,您将使用NSDateFormatter,使用setLocale:
设置其区域设置,使用{{设置其日期和时间格式1}}和setDateStyle:
,然后使用setTimeStyle:
。如果由于您不知道语言环境而无法做到这一点,那么您可以use the UNIX functions:
dateFromString:
接下来,您要将newDate“转换”为东部时间。我说“转换”是因为NSDates不包含任何关于时区的信息 - 它们只是表示自2001年1月1日以来的秒数 - 所以转换的想法毫无意义。当您打印出NSDate时,您可以使用UTC(+0000)获得它,但NSDate与该时区的关联性与其他任何时区无关。
您要做的是创建一个具有正确时区的dateFormatter并使用它来输出日期:
struct tm sometime;
const char *formatString = "%a, %d %b %Y %T %z";
strptime_l("Fri, 25 Mar 2011 10:16:00 -0700", formatString, &sometime, NULL);
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970: mktime(&sometime)];