我正在用C#编写一个调用第三方Web服务上的方法的应用程序(但这个问题与语言无关)。我必须调用的方法之一设置“开始时间”。该方法希望日期和时间以Unix时间格式(自1970年1月1日午夜起的秒数)传递。
我从他们的开发团队收到的代码示例使用Java getTime()
函数,据我所知,它确实返回一个表示Unix时间的长整数。因此,例如,如果我想将开始时间设置为2/28/11 at 5pm
,我会将其传递给1298912400
。但是这不起作用。他们的服务不会返回错误,但如果我去看看网络确认,开始时间是空白的。
现在,如果我使用他们的网络gui手动将开始时间设置为2/28/11 at 5pm
,他们的日志会将其显示为1298930400000
。首先,这个数字是3位数太长,第二,即使我删除额外的零,数字等于2/28/11 but at 11pm
。
所以我的问题是,他们在内部做了一些我不知道的事情,还是我错过了某人可以向我指出的事情?
更新以添加代码:
TimeSpan ts = (new DateTime(2011, 2, 28, 17, 0, 0, DateTimeKind.Utc) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
long goodtime = (long)ts.TotalMilliseconds;
我会回复1298912400000
,但他们说应该是1298930400000
所以我做错了什么?
答案 0 :(得分:3)
他们使用毫秒,你可能没有补偿时区。