iOS SWIFT和Parse获取日期和时间

时间:2015-11-06 13:27:56

标签: swift date parse-platform timestamp nsdate

使用Swift和Parse,我需要获得与设备设置无关的日期和时间(UTC通用日期)。 NSDate()工作正常,但如果用户在设备设置中更改时区或时间或日期,则控制功能变得无用。 基本上我必须检查一个用户每天最多可以向Parse数据库发送1张照片。 目前要执行此操作,我搜索CurrentUser发送的最后1张照片,然后运行控件: 如果objectPhoto1日期== NSDate {blah blah bla ...

问题是NSDate取决于设备的设置,因此如果用户更改日期可能会发送无限照片。

有没有办法从Parse服务器或Apple服务器或其他东西获取当前日期?

我认为这很愚蠢,但它正在变成一场噩梦!

也许我没有解释,我没有要发布的代码,因为如果我没有正确的日期和时间,这个功能就不存在了。 实际例子:

// my iPhone current date and time (correct time) >> 10/12/2015 16:42:18
let TimeNow = NSDate()
print(TimeNow) // show "10/12/2015 16:42:18"

如果我更改我的日期iPhone设置

// now my iPhone date and time are (incorrect time) >> 01/01/2002 15:30:26
let TimeNow = NSDate()
print(TimeNow) // show "01/01/2002 15:30:26"

现在我的日期和时间都错了。我需要设置一个变量,其中包含设备设置的当前时间戳REGARDLESS。

1 个答案:

答案 0 :(得分:5)

解析服务器时间始终设置为UTC。编写一个简单的云函数,返回当前日期和UTC时间。类似的东西:

Parse.Cloud.define("getUTCDate", function(request, response) {

     var now = new Date();
     response.success(now);

});

在iOS应用中使用之前,您需要将Cloud功能部署到Parse服务器。按照Cloud Code指南的Getting Started部分在Parse上部署您的Cloud代码。

在Parse服务器上部署云功能后,您可以使用Swift从iOS调用此函数,如下所示:

PFCloud.callFunctionInBackground("getUTCDate", withParameters: nil) { results, error in
      if error != nil {
          // Your error handling here
      } else {
          // Deal with your results (Date in your case) here.
     }
}