我有Angular 7中的前端部分和带有Spring Boot framework的Java中的后端部分。我想在后端发布一个日期对象。在后端,我有一个本地日期对象。我不需要LocalDateTime对象
我在angular的约会服务。我需要保留日期类型,而不使用字符串。
addDate(): Observable<Date> {
let now = new Date();
return this.http
.post<Date>('/api/date', now)
.pipe(
tap(response => {
return response;
}),
catchError(error => this.notificationService.handleError(error))
);
}
我的后端服务:
@PostMapping
public LocalDate addIrregularity(@RequestBody LocalDate date, HttpServletRequest request) {
log.info(date);
return date;
}
我有一个错误:
2019-08-06 08:21:02.185WARN 1444---[nio-8080-exec-4]. w. s. s. DefaultHandlerExceptionResolver:已解决[org.springframework.http.converter.HttpMessageNotReadableException: JSON解析错误:无法反序列化类型java.time.LocalDate
的值从字符串“2019-08-06T00:00:00.000 0000”:无法反序列化java.time.LocalDate:(java.time.format.DateTimeParseException)无法解析文本'2019-08-06T00:00:00.000 0000',在索引23处找到未解析的文本;嵌套异常com.fasterxml.jackson.databind.exc.InvalidFormatException:无法反序列化类型java.time.LocalDate
的值从字符串“2019-08-06T00:00:00.000 0000:无法反序列化java.time.LocalDate:(java.time.format.DateTimeParseException)无法解析文本'2019-08-06T00:00:00.000 0000',在索引23处找到未解析的文本
如何将LocalDate和LocalDateTime从Angular发送到Spring
更好的解决方案:
app.module.ts
import {DatePipe} from '@angular/common';
.
.
.
providers: [DatePipe]
应用程序。服务ts
import { DatePipe } from '@angular/common';
constructor( private datePipe: DatePipe) {}
public sendStuff(): Observable<any>{
let params = new HttpParams().set("date", this.datePipe.transform(new Date(),"yyyy-MM-dd"))
.set("datetime",new Date().toISOString());
return this.http.post<any>("urlPath../values/show", "Body" , {
headers: new HttpHeaders({
'Accept': 'application/json'
}),
params
});
}
Spring部件
@PostMapping(path="values/show")
public Map<String, Object> showValues(@RequestParam("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
@RequestParam("datetime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime datetime) {) {
...
}
如果您只想转换LocalDate,可以不使用datePipe,只发送new Date()。toISOString()从角度。但是,由于提问者特别询问LocalDate,您需要某种格式来获取此类日期-
同样是可能的,如果你只需要时间(HH: mm: ss. SSSXXX),这是DateTimeFormat. ISO. TIME。
完成
不是很好的解决方案,更不舒服-
应用程序。服务ts
public sendStuff(): Observable<any>{
let params = new HttpParams().set("datetime",new Date().toLocaleString())
.set("datetime",new Date().toISOString());
return this.http.post<any>("urlPath../values/show", "Body" , {
headers: new HttpHeaders({
'Accept': 'application/json'
}),
params
});
}
Spring:
@PostMapping(path="values/show")
public Map<String, Object> showValues( @RequestParam String date, @RequestParam String datetime) {
...
// code to transform String to Date copied somewhere
//Create a DateTimeFormatter with your required format:
DateTimeFormatter dateTimeFormat = new DateTimeFormatter(DateTimeFormatter.BASIC_ISO_DATE);
//Next parse the date from the @RequestParam, specifying the TO type as a TemporalQuery:
LocalDateTime date = dateTimeFormat.parse(datetime, LocalDateTime::from);
// some more code to transform LocalDate...
}
我正在尝试转换java。util。日期至java。时间本地日期: 但是,当有例如22:25的一天时间时,我选择ZoneId,例如:。 即将推出的本地日期将有不同的日期(因为该区域增加了6小时),例如欧洲/明斯克: 我想在结果的LocalDate中保留与该实例相同的日期。一些方法如何解决这个问题?我想可能有几种方法。
问题内容: 我正在寻找一种更改列的数据类型的方法。当前,在我的数据库中,日期列类型定义为varchar,我需要将它们转换回日期类型。 知道怎么做吗? 问题答案: 您将需要根据您的确切表结构来调整它,但是类似的东西;
本文向大家介绍C#转换日期类型实例,包括了C#转换日期类型实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#转换日期类型的方法。分享给大家供大家参考。具体分析如下: 如:将日期1999-5-31 11:20转换成 /Date(928120800000+0800)/ 其中928120800000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTime中间间隔的毫
我对日期及其从日期到LocalDate的转换有问题,主要错误在于1700年的日期。我试过两个不同的日期,每当1700年的时候,我就少了一天。 date dto它是一个检索查询日期的变量。但是该方法只获取dto变量作为输入参数。 我使用: 今年有什么问题?
问题内容: 我需要转换为搜索的内容,但找不到任何内容。那你可以帮我解决这个问题吗? 编辑: 我在GWT屏幕上执行此转换过程。我在屏幕上,使用它的方法可以给我带来价值。因此,我应该将此值放入具有Date类型的对象的属性中。 希望我的编辑会更加清晰。 编辑2: 这行是我的问题的解决方案: 问题答案: 日期转换的最佳方法是使用以毫秒为单位的时间(UTC)。JS Date对象和java.util.Date