当前位置: 首页 > 知识库问答 >
问题:

如何转换日期类型Angular到LocalDate在Java

申屠宏胜
2023-03-14

我有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处找到未解析的文本

共有1个答案

晁璞
2023-03-14

如何将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