0

たとえば、2014-11-24 12:24:25 という日付が NSString 変数に格納されているとします。

将来の日付を計算できるように、それを NSDate オブジェクトに変換しようとしています。

NSDate *futureTimeStamp;

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

NSDate *oldDate = [dateFormatter dateFromString:timestamp];

古い日時は 2014-11-24 06:46:06 +0000 であり、正しくありません。

正しく変換されない理由はありますか?

更新 #1:

タイムスタンプは文字列です。その変数に格納されるのは: 2014-11-24 12:58:40

oldDate を出力すると、これが 2014-11-24 06:58:40 +0000 に表示されます

4

2 に答える 2

-1

次のようにタイムシフトを行うことができます。

NSDate *date = [oldDate dateWithTimeIntervalSinceReferenceDate:milliseconds];
于 2014-11-24T19:04:06.107 に答える
-1

UTC から現地の日付に変換してみてください

  NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
  NSDate *date = [dateFormatter dateFromString:timestamp];
  NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone];
  NSTimeZone *previousTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
  NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date];
  NSInteger currentOffset = [previousTimeZone secondsFromGMTForDate:date];
  NSTimeInterval gmtInterval = currentGMTOffset - currentOffset;
  NSDate *localDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date];
于 2014-11-24T19:10:31.037 に答える