1. 程式人生 > 程式設計 >解決antd datepicker 獲取時間預設少8個小時的問題

解決antd datepicker 獲取時間預設少8個小時的問題

1、擴充套件日期格式化方法

Date.prototype.format = function (fmt) {
 let o = {
  "M+": this.getMonth() + 1,//月份
  "d+": this.getDate(),//日
  "h+": this.getHours(),//小時
  "m+": this.getMinutes(),//分
  "s+": this.getSeconds(),//秒
  "q+": Math.floor((this.getMonth() + 3) / 3),//季度
  "S": this.getMilliseconds()       //毫秒
 };
 if (/(y+)/.test(fmt)) {
  fmt = fmt.replace(RegExp.$1,(this.getFullYear() + "").substr(4 - RegExp.$1.length));
 }
 for (let k in o) {
  if (new RegExp("(" + k + ")").test(fmt)) {
   fmt = fmt.replace(RegExp.$1,(RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  }
 }
 return fmt;
};

2、對選中日期的時間進行格式化處理,最終得到的時間就是當前時間

new Date(value).format(“yyyy-MM-dd hh:mm:ss”)

補充知識:antd datepicker設定開始時間和期限計算出結束時間並且去除週六日

datepicker 需要使用moment格式的時間作為value,但是在操作 此value時,包括moment.add()等方法都會直接改變datepicker的值,即使沒有重新賦值。此時需要配合moment-immutable-methods使用

import { momentImmutableMethods } from 'moment-immutable-methods'
momentImmutableMethods(moment)

getFinishTime=(value)=>{
    const {getFieldValue} = this.props.form
    let i = 0
    if(typeof(value)==="number"){
      let incomingTime = getFieldValue("incomingTime")
      while(i<value){
        if(incomingTime.addImmu(1,'d').weekday()!==5&&incomingTime.addImmu(1,'d').weekday()!==6){
          i++
          incomingTime = incomingTime.addImmu(1,'d')
        }else{
          incomingTime = incomingTime.addImmu(1,'d')
        }
      }
      this.setState({
        finishTime:value===16?moment():incomingTime,disabledFinishTime:value===16?false:true
      })
    }else if(typeof(value)==="object"){
      let deadTime = getFieldValue("deadTime")
      while(i<deadTime){
        if(value.addImmu(1,'d').weekday()!==5&&value.addImmu(1,'d').weekday()!==6){
          i++
          value = value.addImmu(1,'d')
        }else{
          value = value.addImmu(1,'d')
        }
      }
      this.setState({
        finishTime:deadTime===16?moment():value,disabledFinishTime:deadTime===16?false:true
      })
    }
 }

以上這篇解決antd datepicker 獲取時間預設少8個小時的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。