2017-07-27 6 views
-1

こんにちは私はSalesforce Apexを使用しています 私は以下のように文字列として日付を持っています。私はApexを使ってその日を追加する必要があります。Salesforce Apexで日時を日数に追加するにはどうすればよいですか?

String dateTime = '2017-07-08T23:59:59Z'; 

私はそれに1日追加した場合、それは、2017-07-09T23する必要があります:59:文字列として59Z。私はこれをどのようにして行いますか?

ありがとうございます!

答えて

0

文字列をDateTimeに変換してから日を追加する必要があります。

String stringDateTime = '2017-07-08T23:59:59Z'; 
DateTime dt = DateTime.valueOfGmt(stringDateTime); 
DateTime tomorrow = dt.addDays(1); 
DateTime nextMonth = dt.addMonths(1); 
DateTime anniversary = dt.addYears(1); 
String formattedDateTime = dt.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\''); 
0

DSTの問題に注意してください。 "addDays"関数はDSTを意識したものではないため、DSTを持つ時間帯(DSTを持つタイムゾーン)でDSTの切り替えを実行すると、時間が狂うことになります。あなたが作業している場合

DateTime dt = ...; 
Integer days = ...; 
Date d = dt.date().addDays(days); 
Time t = dt.time(); 
dt = DateTime.newInstance(d, t); 

:のように、最後に再度組み合わせ、この1つは最初の独立した日付と時刻の部分に日付/時間を分割解決日付の部分に日数を追加するには

英国(ロンドン)のタイムゾーンは次の匿名Apexが問題をうまく説明しています:

DateTime dt = DateTime.newInstance(2017, 10, 28, 23, 59, 59); 
System.debug('Adding days directly: ' + dt.addDays(2)); 
Date d = dt.date().addDays(2); 
Time t = dt.time(); 
dt = DateTime.newInstance(d, t); 
System.debug('Adding days in parts: ' + dt); 
関連する問題