收藏
回答

小程序云函数中调用 db.serverDate() 获取的值, 如何格式化到 yyyy-mm-dd?

如题,已经测试了一些方法,但都没有办法获取到想要的格式。

查看数据库给db.serverDate() 的返回值类型为 Date,以为可以调用 getFullYear() 等方法,没想到提示报错,db.serverDate(...).getFullYear is not a function

如果使用 new Date 替代 db.serverDate(),使用下面的函数可以获取到想要的格式,但是有时区问题。

function processDate(_date{
  var y = _date.getFullYear();
  var m = _date.getMonth() + 1;
  m = m < 10 ? ('0' + m) : m;
  var d = _date.getDate();
  d = d < 10 ? ('0' + d) : d;
  return y + '-' + m + '-' + d;
};

发现 db.serverDate 返回值可以准确获取正确时区(我们有个开发人员在北美,云函数中db.serverDate() 能准确获取到他那边的时区)。

谁能分享一下 db.serverDate 的格式处理方法么,谢谢

最后一次编辑于  2020-03-11
回答关注问题邀请回答
收藏

1 个回答

  • chihuo
    chihuo
    2020-03-11

    云函数中,这样设置时区,解决了我们的问题

    db.collection('all_houses').add({
        data: {
          house_title'abc',
          house_upload_date_server: processDate(new Date()),
        },
        successfunction(res{
          resolve(res);
        },
        failfunction (err{
          reject(err) 
        }
    })
    
    function processDate(date{
      date = date.toLocaleString("en-US", {timeZone"这里设置timezone"});
      date = new Date(date);
      var y = date.getFullYear();
      var m = date.getMonth() + 1;
      m = m < 10 ? ('0' + m) : m;
      var d = date.getDate();
      d = d < 10 ? ('0' + d) : d;
      var h = date.getHours();
      h=h < 10 ? ('0' + h) : h;
      var minute = date.getMinutes();
      minute = minute < 10 ? ('0' + minute) : minute;
      var second= date.getSeconds();
      second=second < 10 ? ('0' + second) : second;
      return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
    };
    
    2020-03-11
    有用
    回复
登录 后发表内容
问题标签