2017-06-22 3 views
3

テンプレートには、時間ピッカーと日付ピッカーの両方があります。値は1つの数字列としてデータベースにまとめて格納されるので、別のページの必要な場所にテンプレートを挿入するときに、いくつかの手順を適切な形式で互いに解析する必要があります。最初に、値を区切る書式設定関数を呼び出してから、角度モーメントパイプを使って軍事時間を標準の12時間に変換します。時間/日付ピッカーの書式設定で分が追加されるのはなぜですか?

時間ピッカーで時間を選択すると、一貫して7時12分、7時8分または12時08分にテンプレートに補間されます。なぜ分を追加するのですか?

これは私が私がMOMENTを使用する前に、私はTHROUGH TIMEをRUN DATABASE

constructor(//controllers n stuff) { 

//empty event object 

     this.event = { 
     hostName : "", 
     hostId: "", 
     hostPhoto : "", 
     coverCharge: 0, 
     drinkMin: false, 
     reimburse: false, 
     venue : "", 
     guests : 0, 
     date : "", 
     time : "", 
     city : "", 
     eventTime : "", 
     createdTime: "", 
     volunteers : 0 

     } 
}//close constructor 

addEvent(){ 

    let authData = OnymosAccess.getAuth(); //GET DATABASE AUTH 
      this.event.hostName = authData.userName; 
      this.event.hostId = authData.userId; 
      this.event.hostPhoto = authData.userPhoto(); 
      **this.event.eventTime = new Date(this.event.date + " " + this.event.time).getTime();** 
      this.event.createdTime = Date.now(); 

      let that = this; 

       OnymosUtil.addData(//SEND TO DATABASE 

     '/events/' + this.event.city + '/' + this.event.createdTime, 
         this.event, 

     function optionalSuccessCallback (statusMessage) { 
          console.log(statusMessage); 

          that.saveStatus = "successfully saved"; 
         }, 

      function optionalFailureCallback (error) { 

          that.saveStatus = "failed saving" + error; 
         }); 
}//end addEvent 

HTMLテンプレート

<ion-row> 
       <ion-col> 
        <ion-icon name="calendar"></ion-icon> 
        <BR> 
        **{{getFormattedTime(event.eventTime, 'MM-dd-yyyy')}}** 
       </ion-col> 
       <ion-col> 
        <ion-icon name="clock"></ion-icon> 
        <BR> 
        **{{ getFormattedTime(event.eventTime,'HH:MM') | amParse:'HH:mm' | amDateFormat:'hh:mm A' }}** 

       </ion-col> 

GET FORMATTEDタイム機能する日付と時間を節約する方法です。あなたはgetFormattedTime(event.eventTime,'HH:mm')を使用する必要が

getFormattedTime (time, format) { 
     var t = new Date(time); 
     var tf = function (i) { return (i < 10 ? '0' : '') + i }; 
     return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) { 
      switch (a) { 
       case 'yyyy': 
        return tf(t.getFullYear()); 

       case 'MM': 
        return tf(t.getMonth() + 1); 

       case 'mm': 
        return tf(t.getMinutes()); 

       case 'dd': 
        return tf(t.getDate()); 

       case 'HH': 
        return tf(t.getHours()); 

       case 'ss': 
        return tf(t.getSeconds()); 

      } 
     }) 
    } // end of getFormattedTime 

答えて

4
<ion-col> 
    <ion-icon name="calendar"></ion-icon> 
    <BR> 
    **{{getFormattedTime(event.eventTime, 'MM-dd-yyyy')}}** 
</ion-col> 
<ion-col> 
    <ion-icon name="clock"></ion-icon> 
    <BR> 
    **{{ getFormattedTime(event.eventTime,'HH:mm') | amParse:'HH:mm' | amDateFormat:'hh:mm A' }}** 
</ion-col> 

。ヶ月間、 mm -Minutes

1

私はあなたのコードを使用し、ここでそれを試してみてください - あなたのコードでは、getFormattedTime(event.eventTime,'HH:MM') MMは月に

MMを返します使用しています。以下のコードスニペットを確認することができます。コードでnew Date(this.event.date + " " + this.event.time).getTime()を使用しています。それは正常に動作します。そして.getTime()を使わずにnew Date(this.event.date + " " + this.event.time)を直接行うこともできます。

'HH:mm'の代わりに'HH:MM'を行ったようです。コードで修正して試してみてください。

function getFormattedTime (time, format) { 
 
     var t = new Date(time); 
 
     var tf = function (i) { return (i < 10 ? '0' : '') + i }; 
 
     return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function (a) { 
 
      switch (a) { 
 
       case 'yyyy': 
 
        return tf(t.getFullYear()); 
 

 
       case 'MM': 
 
        return tf(t.getMonth() + 1); 
 

 
       case 'mm': 
 
        return tf(t.getMinutes()); 
 

 
       case 'dd': 
 
        return tf(t.getDate()); 
 

 
       case 'HH': 
 
        return tf(t.getHours()); 
 

 
       case 'ss': 
 
        return tf(t.getSeconds()); 
 

 
      } 
 
     }) 
 
    } 
 
    
 
    var time=new Date("2017-07-05 07:00").getTime(); 
 
    console.log(time); 
 
    console.log(getFormattedTime(time, 'MM-dd-yyyy')); 
 
    console.log(getFormattedTime(time,'HH:mm'));

1

あなたのコードの問題は、あなたの代わりに小文字mm(分)のt.getMonth()にマップ大文字MMを使用していることです。

とにかく、momentjsを使用しているので、瞬間解析(moment(Number)ミリ秒の解析)とformat()を使用してgetFormattedTimeを変更することをおすすめします。

function getFormattedTime(time, format) { 
 
    return moment(time).format(format); 
 
} 
 

 
console.log(getFormattedTime(1499200000000, 'MM-DD-YYYY')); 
 
console.log(getFormattedTime(1499200000000, 'HH:mm'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

:私のコードで、あなたはここで

ライブ例(月の日の年と大文字のDDためYYYYので、大文字の)瞬間トークンを使用する必要があり、

注意

関連する問題