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

如何将Reactjs DateTimePicker日期时间转换为Java OffsetDateTime或LocalDateTime

柳项明
2023-03-14

我的前端 ReactJs 代码片段:-

import React, { useState } from 'react';
import DateTimePicker from 'react-datetime-picker';
import './App.css';

function App() {

  const [value, onChange] = useState(new Date());

  console.log("onChage: "+value);

  return (
    <div className="App">
      <DateTimePicker
        onChange={onChange}
        value={value}
        format={'dd/mm/yyyy hh:mm'}
      />
    </div>
  );
}

export default App;

我可以将控制台日志视为

onChage:2022年7月21日星期四13:11:32 GMT 0300(东欧夏季时间)

我需要将这个日期时间发送到Java Spingboot后端。对于后端,我需要将这个日期时间转换为OffsetDateTime或LocalDateTime。我如何能转换这个?

更新:

我尝试并设法转换为数据。通过这个:-

String dateStr = "Thu Jul 21 2022 13:11:32 GMT+0300 (Eastern European Summer Time)";
String[] tokens = dateStr.split("GMT");
String dateTimeStr = "";
if (tokens.length == 2){
    dateTimeStr = tokens[0].trim();
}
System.out.println(dateTimeStr);
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss", Locale.ENGLISH);

Date date = formatter.parse(dateTimeStr);
String formattedDateString = formatter.format(date);
System.out.println("date: "+formattedDateString);

在那里,我失去了时区和偏移量。如何保留时区并抵消 GMT 0300(东欧夏令时间)?

共有2个答案

包修贤
2023-03-14

最简单的方法就是这样做:-

String timeString = input.substring(4,24);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd YYYY HH:mm:ss");
System.out.println(LocalDateTime.parse(timeString, formatter);
谭池暝
2023-03-14

在Ole V.V.的评论之后,我设法获得了OffsetDateTime和ZonedDateTime。我正在分享解决方案。所有的功劳都归于Ole V.V.非常感谢Ole V.V.V。

String dateStr = "Thu Jul 21 2022 13:11:32 GMT+0300 (Eastern European Summer Time)";

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("EEE MMM d yyyy HH:mm:ss 'GMT'XX (zzzz)", Locale.ROOT);
OffsetDateTime date1 = OffsetDateTime.parse(dateStr, dateTimeFormatter);
System.out.println(date1);
// print 2022-07-21T13:11:32+03:00


ZonedDateTime zdt = ZonedDateTime.parse(dateStr, dateTimeFormatter.withZone(ZoneId.systemDefault()));
System.out.println(zdt);
 // print 2022-07-21T13:11:32+03:00[Europe/Bucharest]
 类似资料:
  • 问题内容: 我想将日期转换为时间戳,我的输入是。我用了 上面写着NaN ..有人能告诉你如何转换吗? 问题答案: var myDate = “26-02-2012”; myDate = myDate.split(“-“); var newDate = myDate[1]+”,”+myDate[0]+”,”+myDate[2]; console.log(new Date(newDate).getTi

  • 问题内容: 编辑:我已经编辑了我的问题,以包括更多信息,我已经尝试了许多方法来执行此操作,在StackOverflow上提问通常是我的最后选择。任何帮助是极大的赞赏。 我有一个日期(它是一个时间戳记对象),格式为YYYYMMDDHHMMSS(例如20140430193247)。它从我的服务发送到前端,并使用AngularJS以以下格式显示:date:’dd / MM / yyyy’。 如何将其转换

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。

  • 问题内容: 我有一个日期时间格式的字段,当日期更好并且与数据库的其余部分更一致时,我想进行转换。无论如何,时间部分都是00:00:00。 如何在MySQL中做到这一点? 谢谢。 问题答案: 如果要在-Statement中使用,请使用运算符: 如果要在结构上更改表,只需将数据类型更改为(当然,只有在不影响依赖于此字段的应用程序的情况下,才这样做)。 两者都将消除时间部分。

  • 我已经尝试从firebase时间戳中获取日期和时间,如下所示: 但我得到的结果是:

  • 问题内容: 我已经尝试过一百万种不同的方法,但是没有用。任何帮助将非常感激。 上面的方法不起作用。 基本上,我想做的是获取纪元时间并将其转换为澳大利亚时间。我的当地时间是+05.30,但是我当然不希望这成为促成这种转化的因素。 编辑- 当我运行您的确切代码时,输​​出 时代1318388699000 2011年10月12日星期三08:34:59 GMT + 05:30 12/10/2011 03: