1

DST (ヨーロッパ時間) を含む具体的なタイム ゾーンで日付を表示する必要があります。アプリはリトアニアで使用するため、タイムゾーンは夏季が+3、その他の時期が+2です。問題は、日付のリストしかなく、夏の日付に +3 を表示し、他の日付に +2 を表示する方法がわかりません。現在、私はタイムゾーンを持っています:

// Eastern European Summer Time UTC + 3 hours
NSTimeZone *timeZoneWithDst = [NSTimeZone timeZoneWithAbbreviation:@"EEST"];

//Eastern European Time UTC + 2 hours
NSTimeZone *timeZoneWithoutDst = [NSTimeZone timeZoneWithAbbreviation:@"EET"];

しかし、日付のリストをループして計算するには、日付に +3 または +2 を追加する必要がありますか?

更新最後に、省略形ではなく名前でタイムゾーンを使用するというMartin R.の提案を適用することで機能しました。このように、このタイム ゾーンの日付は DST を自動的に処理します。日付を変換するための私のコードは次のとおりです。

NSTimeZone *TimeZone = [NSTimeZone timeZoneWithName:@"Europe/Vilnius"];
NSInteger seconds = [myTimeZone secondsFromGMTForDate:someDate];
NSDate *result = [NSDate dateWithTimeInterval:seconds sinceDate:someDate];
4

2 に答える 2

1

NSDateを文字列表現に変換するには、 を使用しますNSDateFormatter。デフォルトでは、ローカル タイム ゾーンが使用されます。具体的なタイムゾーンに従って日付を表示するには、設定できます

NSTimeZone *tz = [NSTimeZone timeZoneWithName:@"Europe/Vilnius"];
[dateFormatter setTimeZone:tz];

( http://www.timezoneconverter.com/cgi-bin/findzoneによると、リトアニアのタイムゾーンは「ヨーロッパ/ビリニュス」です。)

于 2013-07-10T11:09:51.110 に答える
0

これは、Swiftで私のために働いた非常によく似た代替手段です:

    var currentDate: NSDate {
    let currentLocalTime = NSDate()

    let localTimeZone = NSTimeZone.systemTimeZone()
    let secondsFromGTM = NSTimeInterval.init(localTimeZone.secondsFromGMT)
    let resultDate = NSDate(timeInterval: secondsFromGTM, sinceDate: currentLocalTime)

    return resultDate
}
于 2015-10-09T08:35:07.937 に答える