使用Java Calendar作为输入的日期结束时包含“Z”的JAX-RPC

时间:2013-07-17 19:14:57

标签: java calendar utc jax-rpc

我们使用JAX-RPC调用后端调用。我使用RAD8.5和后端提供的WSDL / XSD文件生成了JAX-RPC客户端。我们的客户端应用程序为我们提供了格式为yyyyMMdd(20130720)的字符串日期值。后端应用程序需要将此值格式化为yyyy-MM-ddZ。

使用JAX-RPC生成的对象需要一个Calendar对象来输入。所以我创建了一个转换为UTC(下面的代码)的Calendar对象并将其传入。结果XML在我的日期结束时缺少“Z”。二零一三年七月二十零日。

所以我的问题是,使用JAX-RPC如何在日期结束时包含“Z”以满足我后端的要求?我需要对Calendar对象或我的JAX-RPC实现做些什么吗?

日历创建代码

    String requestedDate = "20130720"; //This is a parameter in a method.
    Calendar requestedDateCal = Calendar.getInstance();
    int year = 0;
    int month = 0;
    int day = 0;

    year = Integer.parseInt((String) requestedDate.substring(0, 4));
    month = Integer.parseInt((String) requestedDate.substring(4, 6));
    day = Integer.parseInt((String) requestedDate.substring(6, 8));

    requestedDateCal = DateTimeUtils.convertToGMTCalendar(year, month, day, 0, 0, 0, 0);

convertToGMTCalendar()的代码

    Calendar localCalendar = convertToLocalCalendar(year, month, date, hour, minute, second, utcOffset);
    TimeZone gmtTimeZone = TimeZone.getTimeZone("UTC");
    Calendar gmtCalendar = Calendar.getInstance(gmtTimeZone);
    gmtCalendar.setTimeInMillis(localCalendar.getTimeInMillis());
    return gmtCalendar;

convertToLocalCalendar()的代码

    TimeZone aTimeZone =
        TimeZone.getTimeZone(TimeZoneConversion.GMT.getTimeZoneString() + Integer.toString(utcOffset));

    Calendar localCalendar = Calendar.getInstance();
    localCalendar.clear();

    localCalendar.setTimeZone(aTimeZone);
    localCalendar.set(year, month - 1, date, hour, minute, second);

    return localCalendar;

0 个答案:

没有答案