1

xcode 6.2でswiftで日付フォーマッタを使用しています.ios 8.1では正常に動作していますが、8.1以上のiosでアプリをテストしているとき(8.2と8.4で試しました)、日付フォーマッタが機能しません。誰もが同様の問題に直面していますか。これは、文字列形式10-08-2015T13:59:53+0000で取得している日付のタイプです。フォーマット「dd-MM-yyyy'T'HH:mm:ssZZZ」の日付フォーマッタで日付に変換する必要があります 。これは、文字列を日付に変換する私の方法です:-

func dateFromString(dateString:String)->NSDate
    {

        print(dateString)
        var dateFormatter = NSDateFormatter()

        //yyyy-MM-dd'T'HH:mm:ss.SSSZZZZ
        dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"

        var date = dateFormatter.dateFromString(dateString)
        print(date)
        return date!
    }

申し訳ありませんが、質問を編集しています。なぜそれが起こっているのかわかりました。iPhoneの設定ページで日付と時刻で24_hour_timeがオンの場合、正常に動作しています.オフの場合、日付フォーマッタのみが日付を与えていません.その中にGMTを挿入しました.8.1.3では正常に動作していますが、 8.4の問題

 dateFormatter.timeZone = NSTimeZone(name: "GMT")

ありがとうハッピーコーディング

4

2 に答える 2

7

この質問の答えを見つけました。回答の投稿が遅くなり申し訳ありません。この例で行ったように、フォーマッタにNSLocaleを入力する必要があります。

func dateFromstring(dateString:String)->NSDate {
    //print(date)
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"

    //DateFormatter To change By chakshu
    var enUSPOSIXLocale:NSLocale=NSLocale(localeIdentifier: "en_US_POSIX")
    dateFormatter.locale=enUSPOSIXLocale
    dateFormatter.timeZone = NSTimeZone(name: "GMT")
    //dateFormatter.timeZone = NSTimeZone.localTimeZone()

    var date = dateFormatter.dateFromString(dateString)
    //print(date)
    return date!
}

この助けを願っています。ありがとう

于 2015-09-11T04:50:43.747 に答える
2

警告

  • フォーマッタの関数名は、カスタム関数の名前と同じです。これがあなたの問題だと言っているわけではありませんが、意図されていない可能性があります。
  • let の代わりに var を使用している場合もありますが、エラーは発生しません。

それ以外の場合、コードは正しい日付を返しますが、文字列ではなく日付形式で返されます。

これを目的の形式で印刷するには、日付を目的の文字列形式に変換するだけです。

func dateFromString(dateString:String)->NSDate
    {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "dd-MM-yyyy'T'HH:mm:ssZZZ"
        let date = dateFormatter.dateFromString(dateString)
        return date!
    }

let formatter = NSDateFormatter()
formatter.dateFormat = "dd/M/yyyy, H:mm"

print(formatter.stringFromDate(dateFromString("10-08-2015T13:59:53+0000")))

ここで実行して、最新の Swift でテストします...問題ありません

于 2015-08-10T14:38:10.873 に答える