2016-04-14 16 views
0

Bu yüzden benim projemde ABD'den bir kullanıcı saat 10: 30'da olduğunu ve şimdi başka bir ülkenin başka bir ülke tarafından göründüğü zamanın saat dilimine göre olacağını söyledi.saat dilimlerine göre tarih dönüştürmek

ABD'de Örnek için bu 5:30 şimdi ve daha sonra bu kişi, o yazının

için 06:30 pm görmesi gereken 5 saat Hindistan'da bir kişinin ardından görürse Hindistan'da o 6:30 olduğunu
+0

Saat, sunucuya gönderilmeden önce UTC'ye dönüştürülmeli, böylece zamanlar yerel saat dilimi bilgileriyle dönüştürülebilir. – zcui93

cevap

0

Bu sorunu çözmek için aşağıdaki işlevi oluşturdum. Nasıl çalışır: bu yerel saatin GMT'ye dönüştürüldüğünü varsayın - 2016-04-14 21:00:00 +0000

ve aşağıdaki işlevi kullanarak dönüştürdüğümde, burada Yeni Delhi Hindistan'dayım GMT + 05: 30 olan, o zaman sabahın 2.30'unu alacağım.

+(NSString*)getLocalTimeFromGMTzero : (NSString*)GMTzerioTimeString { 

    NSDateFormatter *df = [NSDateFormatter new]; 
    [df setDateFormat:@"yyyy-MM-dd HH:mm"];  

    //Create the date assuming the given string is in GMT 
    df.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 
    NSDate *date = [df dateFromString:GMTzerioTimeString]; 

    //Create a date string in the local timezone 
    df.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:[NSTimeZone localTimeZone].secondsFromGMT]; 
    NSString *localDateString = [df stringFromDate:date]; 
    NSLog(@"date = %@", localDateString); 

    return localDateString; 
} 
0

Kullanım php fonksiyonu gmdate()
dize gmdate (string $ biçimi [, int $ damgası = zaman()]) iade saati, Greenwich saati (GMT) olması haricinde tarihi() işlevine Özdeş . Parametreler formatı Çıktı tarihi dizesinin biçimi. Date() işlevi için biçimlendirme seçeneklerine bakın. zaman damgası İsteğe bağlı zaman damgası parametresi, bir zaman damgası verilmezse, geçerli yerel saate göre varsayılan bir tamsayı Unix zaman damgasıdır. Diğer bir deyişle, varsayılan değer() değeridir. Dönüş Değerleri Biçimlendirilmiş bir tarih dizgisi döndürür. Zaman damgası için sayısal olmayan bir değer kullanılırsa, FALSE döner ve bir E_WARNING düzey hatası verilir. Zaman damgasında aralığını ekleyin. GMT bölgesi Ör ise 5 fonksiyonu aşağıdaki zaman damgası + 5 * 60 * 60

+0

OP sadece istemci tarafından bahseder (iOS ve Swift in etiketleri), bu yüzden sorunu istemci tarafı perspektifinden açıklamak daha iyi olur. – werediver

0

kullanımlar ekleyin ki:

class func getDateWithFormat(format: String) -> NSDate { 
    var dateFormatter: NSDateFormatter = NSDateFormatter() 
    dateFormatter.timeZone = NSTimeZone.localTimeZone() 
    dateFormatter.dateFormat = format 
    var newDate: NSDate = dateFormatter.dateFromString(dateFormatter.stringFromDate(NSDate())) 
    return newDate 
} 

Örn: var todaysDate: NSDate = NSDate.getDateWithFormat ("dd: dd: yyyy ss: dd: ss a ")

+1

ISO 8601 gibi (bkz. [Wiki] (https://en.wikipedia.org/wiki/ISO_8601) veya bu [w3c sayfası] (https: //) gibi tarih ve saat biçimlendirmesi için yaygın olarak kullanılan bazı standartlara başvurmak daha iyidir. www.w3.org/TR/NOTE-datetime)). – werediver

+0

nasıl çalışmalı? 'u kendiniz denediniz mi? –

+0

Bu işlev size verilen formatla saat dilimi (telefon ayarlarında bulunur) ile zamanı verecektir. –