【问题标题】:Converting Timestamp to Date Format将时间戳转换为日期格式
【发布时间】:2019-02-25 03:54:18
【问题描述】:

基本上我想做的是将我的时间戳格式化为显示可读日期。目前,我收到这样的时间戳:

2018-10-10T05:00:00.000Z

我想做的是:2018-10-10 05:00 PM

以下是我如何查询包含带有时间戳的对象的文档:

 ListarConsultas(){
    var query = firebase.firestore().collection("agendaMedicos")
    var auxint = 0;
    this.dataAux
    let auxString = '[';
    //db.collection('Agenda').where("Documento.id", "==", '1').get().then(res => {
    query.where('Deletado', '==', false).get().then(res => {
      res.forEach(item => {

        auxint++;
        auxString += '{"id":"' + item.id + '","agendaMedicos":' + JSON.stringify(item.data()) + '}';
        console.log(item);
        if (res.size != auxint)
          auxString += ', ';
      })
      auxString += ']';
      this.dataJSON = JSON.parse(auxString);
      console.log(auxString);

      console.log(this.dataJSON);
    }).catch(err => {
      console.log('Ocorreu um erro ' + err);
    });
  }

我如何在 HTML 上显示它

<ion-content padding>
    <div padding-top class="card" *ngFor="let data of dataJSON">
        <div class="card__consulta avaliar">
            <div class="card__consulta--header">
                <h3>Consulta em cardiologia - {{data?.agendaMedicos?.Documento?.Especialidade}}</h3>
                <span>Cardiologia</span>
            </div>
            <div class="card__consulta--content">
                <span>Atendimento realizado em: {{data.agendaMedicos.Documento.HoraFim}}</span>
            </div>
            <ion-row align-items-center class="card__consulta--footer">
                <ion-col>
                    <span>Código de confirmação:</span>
                    <strong>99887</strong>
                </ion-col>
                <ion-col col-5 center text-center>
                    <button class="btn btn-outline-secondary">
                        Avaliar
                    </button>
                </ion-col>
            </ion-row>
        </div>
    </div>
</ion-content>

【问题讨论】:

    标签: angular typescript ionic-framework google-cloud-firestore


    【解决方案1】:

    希望此解决方案适合您。我认为这里定义的许多方法几乎就像重新发明轮子一样,因为我知道库可能只是根据格式化字符串格式化日期。

    //dateString will take values like '2018-10-10T23:00:00.000Z'
    function computeDateString(dateString) {
        var input = new Date(Date.parse(dateString))
        var padder = function (val) {
            return pad(val)
        }
        var time = [format12Hour(input.getHours()), input.getMinutes(), input.getSeconds()].map(padder).join(':')
        var date = [input.getMonth(), input.getDate(), input.getFullYear()].map(padder).join('-')
        return [date, time, getAMPM(input.getHours())].join(' ')
    }
    
    function pad(val) {
        return (val < 10) ? '0' + val : val
    }
    
    function format12Hour(val) {
        var val = (val+1) > 12 ? val-12:val
        return val === 0? 12:val
    }
    
    function getAMPM(val) {
        return val > 12 ? 'PM':'AM'
    }
    //prints 09-10-2018 10:30:00 AM
    console.log(computeDateString('2018-10-10T23:00:00.000Z'))
    

    希望这会有所帮助。

    【讨论】:

    • 感谢您抽出宝贵时间帮助我,在尝试测试您的代码后,我收到以下错误:错误:未捕获(承诺中):TypeError:无法获取未定义或 null 的属性“pad”引用类型错误:无法获取未定义或空引用的属性“pad”
    • 您好,当然可以。您能否确认您从响应中获取时间戳的位置?
    • 我在我的构造函数上调用 computeDateString,这是一个 pastebin:pastebin.com/45wf3GkY
    • @JohnRivers 可以找到它:.map(padder) 应该是 .map(padder.bind(this))。看看这是否有效。由于此处的确切用法,这是必需的。解释:padder 调用this.padthis.map(...) 调用中未绑定。 (希望这是有道理的......)
    • 再次感谢您为帮助我所做的努力,但我仍然收到相同的错误 var time = [this.format12Hour(input.getHours()), input.getMinutes(), input.getSeconds( )].map(padder.bind(this)).join(':')
    猜你喜欢
    • 2016-11-26
    • 1970-01-01
    • 2015-08-19
    • 2020-02-23
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多