【问题标题】:how to set timezone in soap request如何在肥皂请求中设置时区
【发布时间】:2019-03-22 21:48:55
【问题描述】:

我需要在我的肥皂请求 dateTime 字段中添加时区。

见下面我的Java服务客户端的sn-p,

Calendar cancelDate = Calendar.getInstance(TimeZone.getDefault());

我在调试时可以看到下面的时区设置:

zone=sun.util.calendar.ZoneInfo[id="Etc/GMT-3"

java.util.GregorianCalendar[time=1539843209365,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Etc/GMT-3",offset=10800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=9,WEEK_OF_YEAR=42,WEEK_OF_MONTH=3,DAY_OF_MONTH=18,DAY_OF_YEAR=291,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=13,SECOND=29,MILLISECOND=365,ZONE_OFFSET=10800000,DST_OFFSET=0]

但在肥皂请求中,它会像这样弹出(显示 3 小时前):

<CancelDate>2018-10-18T06:10:07.738Z</CancelDate>

时间信息后没有附加时区。我想要的是请求:

2018-10-18T16:23:20.000+03:00

那么我应该怎么做才能做到这一点呢?

谢谢!!

【问题讨论】:

  • 更正:SOAP 请求中日期时间中的Z 是一个偏移量,表示UTC 或距UTC 的偏移量0。
  • 我需要设置偏移量吗?
  • 取决于服务器的需求。如果它只需要一个时间点,那么 2018-10-18T13:23:20.000Z2018-10-18T16:23:20.000+03:00 将是等效的。如果它使用偏移量,它们不是。

标签: java soap calendar timezone


【解决方案1】:

必须有一个T 和一个Z 例如:2021-05-16T00:00:00Z

【讨论】:

    【解决方案2】:

    我在soapUi中使用这个内联:

    "${= Calendar.getInstance(TimeZone.getTimeZone('CET')).format("yyyy-MM-dd'T'HH:mm:ssZ")}"
    

    结果:

    "2021-03-09T11:09:02+0100"
    

    【讨论】:

    • 或许这样更好:"${=new Date().plus(7).format("yyyy-MM-dd'T'HH:mm:ssZ",TimeZone.getTimeZone('CET'))}"
    猜你喜欢
    • 2011-02-10
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多