Angular java GET中的错误日期

Angular java GET中的错误日期,angular,date,jakarta-ee,Angular,Date,Jakarta Ee,我正在创建一个客户管理系统,使用Angular作为前端,使用JavaEE作为后端。问题是发布和获取正确的出生日期。这个职位似乎运作良好 countryCode美国 出生日期1998-08-05 名伊娃 性别F lastName爱格,因为当它来自db时会转换为java日期对象,之后会序列化为字符串时间戳。(可能)粘贴到这里-只需剪切3个零,因为它们是毫秒,您将看到 因为当它来自db时会转换为java日期对象,之后会序列化为字符串时间戳。(可能)粘贴到这里-只需剪切3个零,因为它们是毫秒,您将看到

我正在创建一个客户管理系统,使用Angular作为前端,使用JavaEE作为后端。问题是发布和获取正确的出生日期。这个职位似乎运作良好

countryCode美国
出生日期1998-08-05
名伊娃
性别F

lastName爱格
,因为当它来自db时会转换为java日期对象,之后会序列化为字符串时间戳。(可能)粘贴到这里-只需剪切3个零,因为它们是毫秒,您将看到


因为当它来自db时会转换为java日期对象,之后会序列化为字符串时间戳。(可能)粘贴到这里-只需剪切3个零,因为它们是毫秒,您将看到

避免遗留日期时间类 java.sql.Date到java.util.Date

那些糟糕的类在几年前就被取代了,但是java.time类却被取代了

java.time 对于仅日期的值,不带时间和时区,请使用Java中的
LocalDate
class。在数据库中,在列上使用类似于SQL标准日期的数据类型

很明显,您在数据库中使用了错误的类型,该类型将日期与一天中的某个时间相结合,并且可能与时区相结合

您没有向我们显示足够的详细信息以获得适当的解决方案。但是,当你只将日期转换为日期时间时,你很可能是在一个时区里混在一起的。似乎是一个时区,如
美国/Noronha
大西洋/南乔治亚州
,或
美国/Miquelon

JDBC和java.time的日期时间处理已经被讨论了很多次,因此搜索堆栈溢出了解更多信息

纪元 至于你的神秘数字,它似乎是自1970年UTC,1970-01-01T00:00:00Z的第一个时刻开始的毫秒计数

long input = 902_268_000_000L ;
Instant instant = Instant.ofEpochMilli( input ) ;
你可以运行这个

instant.toString():1998-08-04T22:00:00Z

智能对象,而不是哑字符串 1998-08-05

当我写这篇文章时,我不需要做任何转换

YYYY-MM-DD是SQL中使用的默认格式(顺便说一句,也是ISO 8601标准中使用的格式)。显然,您正在向数据库发送普通字符串。学习在与数据库交互时使用智能对象而不是哑字符串

从JDBC4.2开始,您可以通过
getObject
setObject
方法与数据库交换java.time类型

LocalDate ld = LocalDate.parse( "1998-08-05" ) ;  // For a column of type `DATE`. 
myPreparedStatement.setObject( … , ld ) ;
检索

LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;  // For a column of type `DATE`. 

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*

从哪里获得java.time类

  • 、和更高版本-标准Java API的一部分,带有捆绑实现。
    • Java9添加了一些次要功能和修复
    • 大多数java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期Android(避免遗留日期时间类 java.sql.Date到java.util.Date

      那些糟糕的类在几年前就被取代了,但是java.time类却被取代了

      java.time 对于仅日期的值,不带时间和时区,请使用Java中的
      LocalDate
      类。在数据库中,在列上使用类似于SQL标准
      date
      的数据类型

      很明显,您在数据库中使用了错误的类型,该类型将日期与一天中的某个时间相结合,并且可能与时区相结合

      您没有向我们提供足够的详细信息以提供适当的解决方案。但是,当您仅将日期转换为日期时间时,您很可能是在一个时区混合,可能是含蓄的。似乎是一个时区,例如
      美国/Noronha
      大西洋/南乔治亚州
      ,或
      美国/Miquelon

      JDBC和java.time的日期时间处理已经被讨论了很多次,因此搜索堆栈溢出了解更多信息

      纪元 至于你的神秘数字,它似乎是自1970年UTC,1970-01-01T00:00:00Z的第一个时刻开始的毫秒计数

      long input = 902_268_000_000L ;
      Instant instant = Instant.ofEpochMilli( input ) ;
      
      你可以运行这个

      instant.toString():1998-08-04T22:00:00Z

      智能对象,而不是哑字符串 1998-08-05

      当我写这篇文章时,我不需要做任何转换

      YYYY-MM-DD是SQL中使用的默认格式(顺便说一句,也是ISO 8601标准中使用的格式)。因此,显然您正在向数据库发送纯字符串。在与数据库交互时,请学习使用智能对象而不是哑字符串

      从JDBC4.2开始,您可以通过
      getObject
      setObject
      方法与数据库交换java.time类型

      LocalDate ld = LocalDate.parse( "1998-08-05" ) ;  // For a column of type `DATE`. 
      myPreparedStatement.setObject( … , ld ) ;
      
      检索

      LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;  // For a column of type `DATE`. 
      

      关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

      该项目现已启动,建议迁移到类

      要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

      您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
      java.sql.*
      classes

      从哪里获得java.time类

      • 、和更高版本-标准Java API的一部分,带有捆绑实现。
        • Java9添加了一些次要功能和修复
        • 大多数java.time功能都是bac