Je suis en train de convertir UTC CET avec ce codage Groovy/java:Date de Groovy & TimeZone mise en forme
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.joda.time.*;
import org.joda.time.format.*;
def Message processData(Message message) {
def messageLog = messageLogFactory.getMessageLog(message);
def map = message.getHeaders();
def value = map.get("dateOfBirth");
if (value != null) {
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(value.toString());
TimeZone tz = TimeZone.getTimeZone("CET");
def result = dateTime.withZone(DateTimeZone.forTimeZone(tz)).toString();
message.setHeader("dateOfBirth", result);
return message;
}
}
ce code fonctionne, UTC devient convertie en CET.
Mais je reçois un message d'erreur de toute façon et je ne sais pas pourquoi. Quelqu'un pourrait-il m'aider à me débarrasser de cette erreur?
Erreur:
javax.script.ScriptException: java.lang.Exception:
java.lang.IllegalArgumentException: Invalid format: ""@ line 20 in script8.groovy,
cause: java.lang.IllegalArgumentException: Invalid format: ""
Merci à l'avance
Solution:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.joda.time.*;
import org.joda.time.format.*;
def Message processData(Message message) {
def messageLog = messageLogFactory.getMessageLog(message);
def map = message.getHeaders();
def value = map.get("dateOfBirth");
if (value?.trim() != "") {
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(value.toString());
TimeZone tz = TimeZone.getTimeZone("CET");
def result = dateTime.withZone(DateTimeZone.forTimeZone(tz)).toString();
message.setHeader("dateOfBirth", result);
}
return message;
}
Si le code fonctionne alors pourquoi vous recevez une erreur de syntaxe! Je n'ai pas pu avoir la question complètement! – nagendra547
Essayez de déboguer et de vérifier si 'map.get (" dateOfBirth ")' ne retourne pas de valeur null dans certains cas. –
bonne idée @SzymonStepniak, j'ai ajouté quelques vérifications, mais ne semble pas résoudre le problème. – zyrex