2016-04-14 11 views
0

私のプロジェクトでは、米国のユーザーは、それが10時30分だったと言っている時間を設定しました そして今人は別の国がその時間を参照してください、タイムゾーンに応じて日付を変換する方法

例アメリカの場合は午前5時30分です。インドでは午後6時30分ですので、5時間後にインディアンの人がその投稿を午後6時30分に見なければならない場合は

返された時間はグリニッジ標準時(GMT)であることを除いて
+0

時刻は、サーバーに送信する前にUTCに変換する必要があります。そのため、時刻はローカルのタイムゾーン情報で変換できます。 – zcui93

答えて

0

この問題を解決するために、以下の関数を作成しました。 GMTゼロに変換された現地時間であったとします - 2016-04-14 21:00:00 +0000

そして、次の関数を使用して変換すると、ここはニューデリーのインドにあります。 GMT + 05:30の場合、朝の2時30分の時間があります。

+(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

使用PHP関数gmdate()
文字列gmdate(文字列$フォーマット[、int型$タイムスタンプ=時間()])日付()関数と同じ 。 パラメータformat出力される日付文字列の形式。 date()関数の書式設定オプションを参照してください。 timestampオプションのtimestampパラメーターは、タイムスタンプが指定されていない場合、現在のローカル時刻をデフォルトとするUnixタイムスタンプです。つまり、デフォルトはtime()の値になります。戻り値書式付きの日付文字列を返します。タイムスタンプに数値以外の値を使用すると、FALSEが戻され、E_WARNINGレベルのエラーが発生します。タイムスタンプの は、間隔をに追加します。 GMTゾーンがある 例ならば5は、関数の下にタイムスタンプ+ 5 * 60 * 60

+0

OPにはクライアント側(iOSとSwiftタグ)しか書かれていないので、クライアント側の観点から問題を説明する方が良いでしょう。 – werediver

0

使用を追加し言う:

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 
} 

例:VARのtodaysDate:NSDate = NSDate.getDateWithFormat( "DD:MM: yyyy hh:mm:ss a ")

+1

ISO 8601([wiki](https://en.wikipedia.org/wiki/ISO_8601)またはこの[w3cページ](https://を参照)のように、日付と時刻の書式設定に広く使われている標準を参照することをお勧めします。 www.w3.org/TR/NOTE-datetime))。 – werediver

+0

どうすればいいのですか 自分で試してみましたか? –

+0

この関数は、指定された形式のタイムゾーン(電話設定で表示されています)を表示します。 –

関連する問題