gpt4 book ai didi

java - 发布日期序列为错误日期,有 1 天休息时间

转载 作者:行者123 更新时间:2023-11-30 01:44:51 25 4
gpt4 key购买 nike

enter image description here

我将数据departureTime: "2019-10-21"发布到我的端点,并在我的Spring程序中输出接收到的departureTime变量。

@CrossOrigin(origins = "*")
@RequestMapping(value="/travel/query", method= RequestMethod.POST)
public ArrayList<TripResponse> query(@RequestBody QueryInfo info,@RequestHeader HttpHeaders headers){

if(info.getStartingPlace() == null || info.getStartingPlace().length() == 0 ||
info.getEndPlace() == null || info.getEndPlace().length() == 0 ||
info.getDepartureTime() == null){
System.out.println("[Travel Service][Travel Query] Fail.Something null.");
ArrayList<TripResponse> errorList = new ArrayList<>();
return errorList;
}
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Calendar ca = Calendar.getInstance();
ca.setTime(info.getDepartureTime());
System.out.println("Departure date is " + format.format(ca.getTime()));

...
}


public class QueryInfo {

@Valid
@NotNull
private String startingPlace;

@Valid
@NotNull
private String endPlace;

@Valid
@NotNull
private Date departureTime;

public QueryInfo(){
//Default Constructor
}

public String getStartingPlace() {
return startingPlace;
}

public void setStartingPlace(String startingPlace) {
this.startingPlace = startingPlace;
}

public String getEndPlace() {
return endPlace;
}

public void setEndPlace(String endPlace) {
this.endPlace = endPlace;
}

public Date getDepartureTime() {
return departureTime;
}

public void setDepartureTime(Date departureTime) {
this.departureTime = departureTime;
}
}

控制台显示“出发日期为2019年10月20日”。

运行我的 spring 程序的服务器应该位于 UTC-7 时区。

知道为什么会发生这个错误吗?我如何做最小的改变来修复它?

编辑:

我运行

 System.out.println(ca.getTimeZone().toString());

它输出sun.util.calendar.ZoneInfo[id="America/Los_Angeles"...。我认为这是正确的。

最佳答案

避免使用SimpleDateFormatCalendar,而是使用ZonedDateTime

示例:

ZonedDateTime.now(ZoneOffset.UTC).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))

示例输出:

2019-10-22

或者,如果您想继续使用 java.util 包中的旧 API,那么您必须使用此:

ca.setTimeZone(TimeZone.getTimeZone("UTC")); // to set the time zone for using calendar API.
format.setTimeZone(TimeZone.getTimeZone("UTC")); // set timezone for formatter.

关于java - 发布日期序列为错误日期,有 1 天休息时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58497736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com