将日期解析为yyyy-MM-dd HH:mm:ss格式

时间:2017-04-11 07:14:47

标签: java database datetime spring-jdbc

我想使用LocalDateTime.parse()方法使用日期格式yyyy-MM-dd HH:mm:ss解析日期,但实际得到的是格式为yyyy-MM-ddTHH的日期:mm:ss 。我不需要那个' T'。请参阅下面的代码

LocalDateTime.parse("2016-10-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

我得到的结果是2016-10-31T23:59:59。看到' T'。 ' T'导致问题,以便我无法将其持久保存到我的数据库。我尝试将值保存在datetime类型的列中;我收到了错误 - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar

查看正在运作的值

VALUES('US','101','test','firstname','middleName','preferedN‌​ame','lastName',
       '198‌​9-01-01','M',1,'1122‌​1123','test@test.com‌​','address1','addres‌​s2','Bloomingdale','‌​IL','US','689850',
       1,‌​1,'11111','2016-12-3‌​1 23:59:59')

(最后一个值中没有T

无效:

VALUES('US','101','test','firstname','middleName','preferedN‌​ame','lastName',
       '198‌​9-01-01','M',1,'1122‌​1123','test@test.com‌​','address1','addres‌​s2','Bloomingdale','‌​IL','US','689850',
       1,‌​1,'11111','2016-12-3‌​1T23:59:59')

(最后一个值为T)。

1 个答案:

答案 0 :(得分:5)

LocalDateTime不存储为字符串,而是存储为对象。

您正在获得" T" ,因为.toString()方法默认返回ISO格式,如下所述: https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

  

toString

     

public String toString()

     

将此日期时间输出为字符串,例如2007-12-03T10:15:30。

     

输出将是以下ISO-8601格式之一:

     

uuuu-MM-dd' T' HH:mm
  uuuu-MM-dd' T' HH:mm:ss
  uuuu-MM-dd' H&H:mm:ss.SSS
  uuuu-MM-dd' HH:mm:ss.SSSSSS
  uuuu-MM-dd' HH:mm:ss.SSSSSSSSS

     

使用的格式是输出完整值的最短格式   省略的部分隐含为零的时间。

根据需要输出格式功能。

@Component({
  selector: 'my-app',
  template: `
    <input id="foo" type="checkbox" [ngModel]="foo" (ngModelChange)="fooChange($event)"><label for="foo">{{foo}}</label>
  `,
})
export class App {
  filters:[];
  foo=true
  fooChange(newValue:boolean){
    this.foo=newValue; // we need to make it change !
    setTimeout(()=>{
      if(newValue===false)
        this.foo=true; // if newValue is false, foo becomes true
      else
        this.foo = newValue; // otherwise, do change  
    })
  }
}