【问题标题】:How can i get UTC +1 from React DatePicker?我如何从 React DatePicker 获得 UTC +1?
【发布时间】:2020-12-19 17:10:47
【问题描述】:

我正在使用 React DatePicker 获取预订的日期和时间。

一切似乎都正常,我得到了正确的日期,它被发送到数据库,但如果我选择让我们说 10:30 作为时间,我到达数据库的时间是 9:30,因为显然正在使用 UTC 但是我在 UTC + 1。

我尝试了以下方法来转换为 UTC + 1,但两种方法都不起作用。我还能尝试什么?

第一种方法:

  const date1 = new Date()
  const inc = 1000 * 60 * 60 // an hour

  const _date = new Date(date1)

  const [startDate, setStartDate] = useState(
    new Date( _date.getTime() + inc )
   );

第二种方法:

function addHoursToDate(date, hours) {
    return new Date(new Date(date).setHours(date.getHours() + hours));
  }
  const myDate = new Date();
  const [startDate, setStartDate] = useState(
    addHoursToDate(myDate, 1 )
   );

【问题讨论】:

    标签: reactjs date datepicker utc gettime


    【解决方案1】:

    尝试将数据库中的日期保存为自 Unix 纪元以来的毫秒数。通过这种方式,您可以在客户端显示正确的日期,而无需担心时区。

    const yourDate = new Date();
    const millisSinceUnixEpoch = yourDate.getTime();
    
    ...save on db...
    
    ...get from db...
    
    const yourDate = new Date(millisSinceUnixEpochFromDb); 
    

    【讨论】:

    • 谢谢。我试过这个:const [startDate, setStartDate] = useState(new Date()); 和这个:const [startDate, setStartDate] = useState(new Date.getTime; 和这个:const [startDate, setStartDate] = useState(new Date(new Date().getTime)); 这似乎与你建议的一样(根据currentmillis.com),但我从 date-fns 收到以下错误: RangeError : 无效的时间值
    猜你喜欢
    • 1970-01-01
    • 2019-05-02
    • 2014-07-07
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多