使用TimeStamp将Date转换为NSString iOS

时间:2014-02-04 19:20:22

标签: ios objective-c nsdate

我正在尝试将设备当前时间转换为区域(America/New_york

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"America/New_York"]];
NSDate *start = [NSDate date];

start现在设备当前时间为IST。如何将其转换为“ America ”区域

我打算做以下

start = [dateFormatter dateFromString:<start date String>];

根据时间段将一天分为3个部分。

Say 08:00 - 15:00 AS PHASE1
    15:00 - 17:00 AS PHASE2
    17:00 - 20:00 AS PHASE3
    20:00 - 08:00 AS TRANSITION PHASE and can be ignored.

我只是接受设备的日期并附加时间字符串以确定它在哪个阶段。

示例:印度时间是05-FEB-2014 01:25 AM(设备日期)

15:00视为第一个截止值。我将“05-FEB-2014”附加到15:00并将其消化为美国时区..哪个结果并给了我06-FEB-2014 02:30 IST(截止日期)..所以这两天之间的差异大于一天!

我的预期结果也可能是美国时区的设备时间,并与最近的截止时间进行比较。

3 个答案:

答案 0 :(得分:6)

NSDate没有时区。这是一个在任何地方都有效的单一时间参考。它基本上只是NSTimeInterval的对象包装器 - 它存储的所有内容都是自引用日期以来的秒数。时区仅在转换为用户可见字符串/从用户可见字符串转换时适用。

您可以从日期格式化程序中获取用户可见的字符串

NSString *localizedDateString = [dateFormatter stringFromDate:start];

但将NSDate转换为特定时区并非有意义的目标。 <{1}}上没有时区,因此它不是可以应用的转化。

答案 1 :(得分:5)

纽约的日期:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"America/New_York"];
[dateFormatter setTimeZone:timeZone];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];

NSLog(@"Date : %@", dateString);

所有区域的日期:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames];

for (NSString *name in timeZoneNames) {
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:name];
    [dateFormatter setTimeZone:timeZone];

    NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
    NSLog(@"timeZone abbreviation : %@\nName : \"%@\"\nDate : %@\n\n", [timeZone abbreviation], name, dateString);
}

答案 2 :(得分:1)

请参阅dateformatter中的stringFromDate方法。您传入NSDate并转换为指定的格式。

更新:以下是设置当前时区的方式[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html