收藏
回答

请问云开发如何在获取数据库的同时格式化时间戳?

感觉可以通过聚合操作实现,但是API中并没有处理时间戳的


回答关注问题邀请回答
收藏

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-25

    // 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

    // dateBase为起点ISODate

    let dateBase = $.dateFromParts({year: 1970, month: 1, day: 1, hour: 8, minute: 0, second: 0, millisecond: 0, timezone: 'Asia/Shanghai'})

    // 时间戳转日期 = 起点ISODate + 13位的时间戳(即包括毫秒)

    // timestamp为时间戳Number型字段,如果是13位就直接是'$timestamp',如果是10位,则要乘以1000,即$.multiply(['$timestamp', 1000])

    let timstampToDate = $.add([dateBase, $.multiply(['$timestamp', 1000])])

    return db.collection('xxxx').aggregate()

        .addFields({

        formatDate: $.dateToString({

            date: timstampToDate,

            format: '%Y-%m-%d %H:%M:%S.%L',

            timezone: 'Asia/Shanghai'

        })

    })

    .end()


    2019-11-25
    有用 2
    回复 4
    • 被子
      被子
      2019-11-25
      谢谢,一直不懂聚合操作,使用后会修改数据库吗?可以在end里直接或取修改后的值吗?
      2019-11-25
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-25回复被子
      不会修改到数据库的
      可以在end里直接或取修改后的值
      2019-11-25
      回复
    • 被子
      被子
      2019-11-25回复o0o有脾气的酸奶
      谢谢!
      2019-11-25
      回复
    • 匿旅
      匿旅
      2020-07-07
      👍👍👍 mark一下
      2020-07-07
      回复
登录 后发表内容
问题标签