Java Groovy Date&;时区格式
我使用groovy/java编码将UTC转换为CET:Java Groovy Date&;时区格式,java,datetime,groovy,timezone,cloud-integration,Java,Datetime,Groovy,Timezone,Cloud Integration,我使用groovy/java编码将UTC转换为CET: 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.
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;
}
}
此代码有效,UTC正在转换为CET
但我还是收到了一条错误消息,我不知道为什么。谁能帮我摆脱这个错误
错误:
javax.script.ScriptException: java.lang.Exception:
java.lang.IllegalArgumentException: Invalid format: ""@ line 20 in script8.groovy,
cause: java.lang.IllegalArgumentException: Invalid format: ""
提前谢谢
解决方案:
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;
}
你可以走了:
//Change the date and date formate as needed
def inputDateString = "Wed Aug 23 00:00:00 UTC 2017"
def inputDateFormat = "E MMM dd HH:mm:ss Z yyyy"
def outputDateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
def outputTZ = TimeZone.getTimeZone('CET')
def date = Date.parse(inputDateFormat, inputDateString)
def convertedDate = date.format(outputDateFormat, outputTZ)
println convertedDate
您可以在线快速试用您可以在这里:
//Change the date and date formate as needed
def inputDateString = "Wed Aug 23 00:00:00 UTC 2017"
def inputDateFormat = "E MMM dd HH:mm:ss Z yyyy"
def outputDateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
def outputTZ = TimeZone.getTimeZone('CET')
def date = Date.parse(inputDateFormat, inputDateString)
def convertedDate = date.format(outputDateFormat, outputTZ)
println convertedDate
当
值
变量包含正确的日期时间值时,您可以在线快速尝试您的代码工作正常
如果我更改value=”“
(空字符串),则我有相同的异常:
java.lang.IllegalArgumentException:无效格式:“”
当
值
变量包含正确的日期时间值时,代码工作正常
如果我更改value=”“
(空字符串),则我有相同的异常:
java.lang.IllegalArgumentException:无效格式:“”
如果代码正常工作,那么为什么会收到语法错误!无法完全理解这个问题!尝试调试并检查
map.get(“dateOfBirth”)
在某些情况下是否不返回null
值。好主意@SzymonStepniak,我添加了一些检查,但似乎无法解决问题。dateOfBirth
的现有日期格式是什么?无论如何,请尝试解决方案现有日期格式类似于1984-03-29T22:00:00Z@RaoIf代码正常工作,那么为什么会收到语法错误!无法完全理解这个问题!尝试调试并检查map.get(“dateOfBirth”)
在某些情况下是否不返回null
值。好主意@SzymonStepniak,我添加了一些检查,但似乎无法解决问题。dateOfBirth
的现有日期格式是什么?无论如何,尝试一下解决方案现有的日期格式就像1984-03-29T22:00:00Z@Raothanks,这也是@SzymonStepniak的想法。这不包括一个解决方案,但让我找到它。谢谢,谢谢,这也是@SzymonStepniak的主意。这不包括一个解决方案,但让我找到它。谢谢