php > echo strtotime("now America/New_York")."\n";
1376459035 // -> 2013-08-14 05:43:55 - Wrong
php > echo strtotime("now UTC")."\n";
1376444635 // -> 2013-08-14 01:43:55 - OK
php > echo time()."\n";
1376444635 // -> 2013-08-14 01:43:55 - OK
任何人都可以解释一下吗?
这是一些PHP的发明 - 时区 - “纠正”unix时间戳吗?
//编辑:
我意识到用“now”指定时区是没有意义的。然而,它确实与其他相对时间有关,例如“明天午夜”。在那里,取决于时区,“明天”可能是更远的一天,取决于时区是否已经超过午夜。这种行为同样很奇怪,只是有点难以解释。
答案 0 :(得分:0)
正如Unix time wiki所述,Unix Epoch始终采用UTC格式。这就是
的输出原因echo strtotime("now UTC");
echo time();
是一样的。根据{{3}}纽约时区UTC -5 hours
。目前夏令时+1现在同样为UTC -4 hours
。这就是你得到结果2013-08-14 05:43:55
(4小时差异)的原因。
答案 1 :(得分:0)
您正在使用
byte[] binaryData = (byte[])((DataRowView)bindingSource_zQryRpt.Current).Row["ExportConfig"];
string XMLStored = System.Text.Encoding.UTF8.GetString(binaryData, 0, binaryData.Length);
if (XMLStored.Length > 0)
{
IIDExportObject ExportConfig = new IIDExportObject();
var serializer = new XmlSerializer(ExportConfig.GetType());
//StringBuilder StringResult = new StringBuilder(XMLStored);
// Load the XML from the Query into the StringBuilder
// Now we need to build a Stream from the String to use in the XMLReader
byte[] byteArray = Encoding.UTF8.GetBytes(XMLStored);
MemoryStream stream = new MemoryStream(byteArray);
using (var reader = XmlReader.Create(stream))
{
ExportConfig = (IIDExportObject)serializer.Deserialize(reader);
}
}
就是为什么它在字符串的不同时区显示unix时间戳。
使用此功能:
strtotime("now America/New_York")