プロジェクトのトレーニング記録 (4) - フロントエンドの日付型とデータベースのタイムスタンプ型の比較

目次

1. 最近何をしましたか。

2. 発生した問題と解決策

1. Axios はデータベースで有効期限タイプを取得します

2. フロントエンドで取得した Date() 型の現在時刻型

3. フロント エンドとバック エンドの時刻タイプは、yyyy-MM-dd HH:mm:ss 形式に一律に変換されます。

4. yyyy-MM-dd HH:mm:ss 形式での時間比較

1. 最近何をしましたか。

      主に4月下旬から5月上旬にかけて行ったことと、発生したトラブルを記録します。
      この期間は、主にクライアントのフロントエンドの書き込みとバックエンドのロジックの書き込みです。主にクライアント側での申請情報の表示と申請内容の表示を担当しています。

      フロントエンドは、データベースから抽出したタイムスタンプ型のアプリケーション有効期限と、フロントエンドが取得した日付型の現在時刻を比較し、次の論理的な判断と操作に進みます。

       それでは、時間比較の方法について話しましょう。

2. 発生した問題と解決策

1. Axios はデータベースで有効期限タイプを取得します

取得したタイムスタンプ タイプの形式:

即:yyyy-MM-dd'T'HH:mm:ss.SSSXXX

2. フロントエンドで取得した Date() 型の現在時刻型

3. フロント エンドとバック エンドの時刻タイプは、yyyy-MM-dd HH:mm:ss 形式に一律に変換されます。

ミリ秒レベルの比較を容易にするために、両方とも yyyy-MM-dd HH:mm:ss 形式に変換されます。

バックエンド変換メソッド、つまり yyyy-MM-dd'T'HH:mm:ss.SSSXXX から yyyy-MM-dd HH:mm:ss へのメソッド コードは次のとおりです。

renderTime(date){
      var dateee = new Date(date).toJSON();
      return new Date(+new Date(dateee) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
    },

フロントエンド変換メソッド、つまり Date() から yyyy-MM-dd HH:mm:ss メソッド コードは次のとおりです。

dateFormat(date){
      console.log("当前时间转换前:"+ date);
    
      let y = date.getFullYear()
      let m = date.getMonth() + 1
      m = m < 10 ? ('0' + m) : m
      let d = date.getDate()
      d = d < 10 ? ('0' + d) : d
      let h =date.getHours()
      h = h < 10 ? ('0' + h) : h
      let M =date.getMinutes()
      M = M < 10 ? ('0' + M) : M
      let s =date.getSeconds()
      s = s < 10 ? ('0' + s) : s
      let dateTime= y + '-' + m + '-' + d + ' ' + h + ':' + M + ':' + s;
      console.log("当前时间转换后:"+ dateTime);
      return dateTime;

    },

4. yyyy-MM-dd HH:mm:ss 形式での時間比較

ここでは Date.parse() メソッドが使用されています。

Date.parse() メソッドは、日付を含む文字列を解析し、その日付から 1970 年 1 月 1 日の午前 0 時までのミリ秒数を返します。

規則により文字列が必要です。次のように(いくつかの情報と大物のブログを利用):

  • 短い日付には /date セパレーターを使用できますが、7/20/96 または 6/15/2008 などの月/日/年の形式に準拠する必要があります。
  • 1995 年 7 月 10 日の形式で表される長い日付の年、月、日は任意の順序で並べることができ、年は 2 桁または 4 桁の形式で表すことができます。2 桁の年を使用する場合、年は 70 以上である必要があります。
  • 括弧内のテキストはコメントと見なされます。これらの大かっこは入れ子にすることができます。
  • コンマとスペースは区切り記号と見なされます。複数のセパレーターを使用できます。
  • 月と日の名前は 2 文字以上にする必要があります。2 文字の名前が一意でない場合は、一致する最新の日付に解決されます。たとえば、Ju は 6 月ではなく 7 月に解決されます。Chrome は「Ju」をサポートしていません。
  • 日付の他の部分から決定された週数と一致しない週番号を示す日付が指定されている場合、日付の曜日は無視されます。たとえば、1996 年 11 月 9 日火曜日は、実際には 1996 年 11 月 9 日が金曜日であっても、受け入れられて分析されます。しかし、結果の Date オブジェクトには 1996 年 11 月 9 日金曜日が含まれています。
  • JavaScript は、協定世界時 (UTC) とグリニッジ標準時 (GMT) だけでなく、すべての標準タイム ゾーンを処理します (例: Thu, 07 Aug 2014 11:00:14 GMT)。IE6 ~ IE8 は UTC 形式をほとんどサポートしておらず、IE9 のサポートは包括的ではありません。
  • 時間、分、および秒はコロンで区切られていますが、これらすべてを指定する必要はありません。10:、10:11、および 10:11:12 はすべて有効です。
  • 24 時間制を使用している場合、午後 12 時以降の時刻を PM として指定するとエラーになります。たとえば、午後 23 時 15 分は間違っています。
  • 無効な日付を含む文字列のエラーです。たとえば、2 年または 2 か月を含む文字列はエラーです。

規則によると、yyyy-MM-dd HH:mm:ss を MM-dd-yyyy HH:mm:ss に変換するためのフォーマット コードは次のとおりです。

compareDate(date1,date2){
        var startDate = date1.substring(0,10).split('-');//当前时间
				var endDate = date2.substring(0,10).split('-');//失效时间
				var startNum = startDate[1]+'-'+startDate[2]+'-'+startDate[0]+' '+date1.substring(10,19);  
				var endNum = endDate[1]+'-'+endDate[2]+'-'+endDate[0]+' '+date2.substring(10,19);
        
				var disparityTime =(Date.parse(endNum)-Date.parse(startNum))/3600/1000; //失效时间-当前时间
 				if(Number(disparityTime)<0){
				console.log("失效时间小于当前时间");
        return true;//已失效
 				}else{
           console.log("失效时间大于当前时间");
           return false;//未失效
         }

    },

おすすめ

転載: blog.csdn.net/pinkray_c/article/details/125108438