据我所知,
var now = new Date();
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
它基于客户端时间机器。
假设客户端机器已经改变了他们的时间,那么这将是一个问题。
如果我错了,请纠正我。
问题 - 如果客户时间提前或落后,如何在客户端获得准确的UTC / GMT时间?
答案 0 :(得分:2)
您可以使用toISOString
功能:
- (void) save_Clicked:(id)sender {
mustRefresh = YES; // there is new record
ConditionsAppDelegate *appDelegate = (ConditionsAppDelegate *)[[UIApplication sharedApplication] delegate];
//Create a Condition Object.
Condition *c = [[Condition alloc] init];
NSInteger newId = c.getNextConditionId;
Condition *cond = [[Condition alloc] initWithPrimaryKey:newId];
cond.condition_area = txtConditionArea.text;
cond.condition_detail = txtConditionDetail.text;
cond.condition_name = conditionName;
NSLog(@" ///ABOUT TO SAVE THE CONDITION: %@ / %@ / %@", cond.condition_area, cond.condition_detail, cond.condition_name);
//Add the object
[appDelegate addCondition:cond];
[cond addCondition];
[appDelegate populateFromDatabase];
rvc.conditions = [appDelegate activeConditions];
// UPDATE THE TABLEVIEW
[rvc.tableView reloadData];
// release
[cond release];
[c release];
//Dismiss the controller.
[self.navigationController dismissViewControllerAnimated:YES completion: ^{
if (mustRefresh)
if ([self.delegate respondsToSelector:@selector(refreshTable)]) // this is just for check if 'refreshTable responds', prevents from crashing
[self.delegate refreshTable];
}];
}
或者通过计算timezone offset
来创建新日期var utc = new Date().toISOString(); // 2015-05-26T04:30:09.490Z
请注意,在上面的代码var now = new Date();
var utc = new Date(now.getTime() + now.getTimezoneOffset() * (60 * 1000));
中,以分钟为单位返回时区。所以,我把它转换成毫秒。
总有moment-timezone库可以简化处理时区。
答案 1 :(得分:0)
如果您想要一个独立于用户时钟的解决方案,您必须使用某种类型的Web服务。您可以构建自己的(将服务器的时间发送到浏览器),或使用Web服务。
以下是使用timeapi.org的示例,该示例以GMT格式返回并输出当前时间。您可以修改此代码,将用户的时区发送为偏移量(将网址替换为http://www.timeapi.org/+10/now
,其中+10是偏移量)。
<script type="text/javascript">
function myCallback(json) {
alert(new Date(json.dateString));
}
</script>
<script type="text/javascript" src="http://timeapi.org/utc/now.json?callback=myCallback"></script>
取自this page。