2017-09-08 14 views
0

私はiOSが初めてで、私の日付に(5)ミリ秒を追加したいと思います。私は以下のコードを使用しているが、私は私が分日付が異なるDateFormatter

2017年8月9日10時28分のいくつかの遅延を有する出力を取得しています

let str_TimeStamp = "2017-08-09 10:26:30.8" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.S" 
formatter.timeZone = NSTimeZone(abbreviation: "UTC")! as TimeZone 

var dateInput: Date? = formatter.date(from: str_TimeStamp) 
dateInput = dateInput?.addingTimeInterval(TimeInterval(5*100)) 
let endtime = formatter.string(from: dateInput!) 
print(endtime) 

を使用しています正確な日付を取得していない午前: 10.8

+0

無関係に、しかし、あなたはの使用を排除する必要があります'NSTimeZone'。 'TimeZone'を直接インスタンス化するだけです... – Rob

答えて

3

addingTimeIntervalのパラメータは で、追加するための値です。

したがって、addingTimeInterval(TimeInterval(5*100)) - 500秒= 8分を加算します。

あなたには、いくつかのミリ秒を追加したい場合は言う(5)は、この時間間隔追加する必要があります:0.005

ので、最終的なコードは次のとおりです。

let str_TimeStamp = "2017-08-09 10:26:30.8" 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSSS" 
formatter.timeZone = TimeZone(abbreviation: "UTC") 

var dateInput = formatter.date(from: str_TimeStamp) 
dateInput = dateInput?.addingTimeInterval(5/1000) 

if let dateInput = dateInput { 
    let endtime = formatter.string(from: dateInput) 
    print(endtime) // prints 2017-08-09 10:26:30.8050 
} 
+0

日付文字列にタイムゾーンが含まれていない場合は、通常はローカルタイムであることに注意してください。現地時間ではないことが確実でない限り、日付文字列の解析時にタイムゾーンを変更しないでください。 –

+0

@LeoDabus - 私は、タイムゾーンがない場合、現地時間を「通常は意味する」ということに同意します。 (私は実際には、Webサービスや永続的な店舗を扱うときは正反対であると主張しています)。しかし、文字列に特定のタイムゾーン修飾子がない場合、使用するタイムゾーンを確認する必要があります。 – Rob

関連する問題