如何从servervalue获取时间戳?

时间:2018-03-21 16:50:27

标签: ios swift firebase server timestamp

我尝试使用以下代码从firebase获取服务器时间:

function resolveUnknownProps(obj, resolveKey) {
  const handler = {
    get(target, key) {
      if (
        target[key] !== null &&
        typeof target[key] === 'object'
      ) {
        return resolveUnknownProps(target[key], resolveKey);
      } else if (!target[key]) {
        return resolveUnknownProps({ [resolveKey]: true }, resolveKey);
      }

      return target[key];
    },
  };

  return new Proxy(obj, handler);
}

const user = {}

console.log(resolveUnknownProps(user, 'isUndefined').personalInfo.name.something.else); // { isUndefined: true }

但这给我一个错误说:

  

二元运算符' /'不能应用于类型的操作数' [任何Hashable:Any]'和' Int'

为什么const { isUndefined } = resolveUnknownProps(user, 'isUndefined').personalInfo.name.something.else; if (!isUndefined) { // do someting } 选择返回TimeIntervel值? 我怎样才能获得服务器的本地时间?

2 个答案:

答案 0 :(得分:0)

我不确定如何从servervalue获取时间戳,但是引发了错误,因为您用来创建日期的convenience init(timeIntervalSince1970 secs: TimeInterval)期望secs在TimeInterval中为Double并传递你试图划分一个不允许的类型(时间戳/ 1000)。

以下是您的双重值应如何使其正常工作的示例

let unixTimestamp = 1480134638.0
let date = Date(timeIntervalSince1970: unixTimestamp)

print(date) -> "2016-11-26 04:30:38 +0000\n"

答案 1 :(得分:0)

您无法使用ServerValue.TIMESTAMP获取Firebase的服务器时间。

当您将文档写入文档时,它会映射到服务器时间的Firestore时间戳值。

如果您想要服务器时间,有两种方法。

  1. ServerValue.TIMESTAMP写入Firestore中的临时文档并从那里阅读。

  2. 使用Google Cloud功能将Date()对象的实例作为response.end()方法中的字符串。像这样创建一个HTTP端点。然后,您可以使用AJAX请求来获得结果。

  3. const app = (req, res) => { // this will return the Firebase server time res.send(new Date()); };