2017-10-13 103 views
1

我使用的是什麼如何複製'新Date()'格式?

  • 角材料的日期選擇器
  • Moment.js
  • 公司的FireStore

我在做什麼

  • 瓦en創建一個新項目並將其添加到firestore,我使用'new Date()'添加日期'

  • 這創建了以下格式it firestore:2017年10月13日上午9:00:04 UTC +1

  • 這正是我想要的

  • 材料日期選擇器讀取這個完美的罰款,並顯示13/10/2017

我想要做什麼

  • 如果我編輯的項,然後從材料的日期選擇器一個新的日期,然後點擊更新,我想日期選擇器值,這是目前一個字符串轉換的18/12/2017(例如...)

  • 之前寫回數據庫,我想這種格式是像2017年12月18日在上午09時00分04秒UTC + 1

問題

  • 我怎麼會去這樣做呢?
  • 這是一個moment.js轉換嗎?
  • 或者有材料日期選擇器可以幫助我的選項嗎?

Component.html

<mat-form-field> 
 
    <input #newItemDate #picker matInput [matDatepicker]="picker" placeholder="Choose a date" (focus)="picker.open()" formControlName="item_date"> 
 
    <mat-datepicker #picker></mat-datepicker> 
 
</mat-form-field> 
 

 

 
<button (click)="dateTest(newItemDate.value)"> Test Date </button>

組件。TS

顯然,這裏不多:) - 但是,這是我需要有轉換後的日期

dateTest(newItemDate) {  
 

 
    // newItemDate = 13/10/2017 
 

 
    // I need October 13, 2017 at 9:00:04 AM UTC+1 
 
    
 
    }

+0

在SO上,您應該嘗試**自己編寫代碼**。後** [做更多的研究](//meta.stackoverflow.com/questions/261592)**如果你有問題,你可以**發佈你已經嘗試**與清楚的解釋是什麼是'工作**並提供** [最小,完整和可驗證示例](// stackoverflow.com/help/mcve)**。 – Rob

+0

謝謝你的迴應。我可以很容易地發佈什麼不工作,因此我在這裏......不會改變我的問題和我需要幫助的東西。 – MegaTron

+0

您需要發佈您嘗試過的代碼無效。一個簡單的例子,不是所有的。 – Rob

回答

2

您可以使用內置的日期格式功能:

dateTest(newItemDate) {  

    var formatedDate = new Date(newItemDate); 

    // UTC Date 
    console.log(formatedDate.toUTCString()); 

    // ISO Date 
    console.log(formatedDate.toISOString()); 

    } 

鏈接StackBlitz Demo

+0

嗨費薩爾。我的日期區域設置可能設置爲英國或美國。在你的例子中它是美國。當我在這種情況下設置爲英國時,出現以下錯誤: 「UTC =無效的日期」/「ISO = ERROR RangeError:無效的時間值」 – MegaTron

+0

我已用美國模式對其進行了測試,結果完美。我可以像魅力一樣讀書寫字。當我使用「dateAdapter.setLocale('en-gb');」時,它不起作用。 – MegaTron

+0

查看更新後的演示。我已經添加了將'en-GB'格式化爲'en-US'格式的方法,然後繼續進行日期轉換。 – Faisal

2

你可以嘗試做了一下出字符串和格式它像這樣:

// dateTest(newItemDate) { 
 

 
// This way you can make a moment right from the string :) 
 
let newItemDate = moment('13/10/2017', 'DD/MM/YYYY').format("MMMM DD, YYYY H:MM:SS A Z"); 
 
console.log(newItemDate); 
 

 
// }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

編輯:修復了片段中缺少的moment.js導入。

+0

嘿@OArnarsson!感謝您的迴應! :)。我的控制檯顯示:您輸入的日期是:1456444800000.這可能是一個材料日期選擇器的東西? – MegaTron

+0

@MegaTron我已經更新了這個片段,它是否仍然給你時代? – OArnarsson

+0

嘿,夥計,謝謝!這看起來更接近。但是,時刻會向控制檯記錄一個錯誤:「moment.min.js:23棄用警告:提供的值不是以可識別的ISO格式。瞬間構造回退到js Date(),這在所有瀏覽器和版本中都不可靠。非ISO日期格式不鼓勵,將在即將發佈的主要版本中刪除。有關詳細信息,請參閱http://momentjs.com/guides/#/warnings/js-date/。「 – MegaTron