- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的“工具箱”中,我正在使用此功能:
function dataAttuale() {
$now = new DateTime();
$dataAttuale = $now->format(DateTime::ISO8601);
$offset = $now->getOffset();
date_default_timezone_set('UTC');
$nowUTC = new DateTime();
$dataUTC = $nowUTC->format(DateTime::ISO8601);
$orario = array();
$orario['dataAttuale'] = $dataAttuale;
$orario['dataUTC'] = $dataUTC;
$orario['offset'] = $offset;
return $orario;
}
我得到了这个数组
Array
(
[dataAttuale] => 2013-10-18T11:03:52+0200
[dataUTC] => 2013-10-18T09:03:52+0000
[offset] => 7200
)
所以我可以在日期时间 MySql 字段中保存引用 UTC 的日期时间。
现在,我遇到了一些麻烦。
1)我还会保存偏移量(以秒为单位)。 什么是最好的Mysql字段?我认为最大秒数可以是 +14hours * 60 * 60 = 50400 和 -12hours*60*60 = -43200
2)您认为节省也抵消了值得注意的事情吗?即,例如,多个 API 服务返回 UTC + 偏移量格式的日期...
非常感谢!
更新:
谢谢两位。现在我以 UTC 格式和 varchar 时区保存 MySQL 日期时间。通过一些代码,我得到了我想要的:
$orario = new DateTime($value['creazione'], new DateTimeZone($value['timezone']));
$orario = $orario->format(DateTime::ISO8601);
输出为(欧洲/罗马)
2013-10-19T09:27:54+0200
对于美国/蒙特利尔
2013-10-19T09:29:16-0400
澳大利亚/墨尔本
2013-10-19T09:30:31+1100
(分钟//秒的差异是在我的 PHP 脚本中更改默认时区的时间)。
现在我认为:
1) 我可以 mock Y2038 bug,放弃(叹息:( ) 时间戳:(
2) 我可以安全地环游世界并使用我自己的日历(naaaa...当然,我将永远使用 Google 日历)
最佳答案
保存偏移量没有多大意义。您可能对时间戳感兴趣的两个可能值:
请注意,这两者实际上是同一件事,它们以特定位置或时区的挂钟时间和日期的表示法表达时间点。唯一的区别是 UTC 是相对于其他时区偏移量表示的指定标准“位置”;但菲律宾的马尼拉没有理由不能用于同样的目的。
因此,当您想存储绝对时间戳时,您可以:
无论哪种方式,您都需要时间戳,并且需要知道它位于哪个时区。在 1. 中,您提前决定所有时间戳都位于同一定义的时区中,并且不需要存储它,在 2. 中,您显式保存该时区信息。
偏移量并不是一个好存储的东西,因为它全年都会变化。夏季的偏移量可能比 UTC 多 6 小时,但冬季可能多 7 小时。如果您稍后需要对本地时间进行日期计算,则偏移量会产生误导并且对您没有多大帮助。如果您知道所讨论的时区,则可以在以后获取一年中任何时间的偏移量。
MySQL 不支持 DATETIME + TIMEZONE 字段(例如 Postgres 就支持),因此您需要将时区(例如“欧洲/柏林”)存储在单独的文本字段中。如果您根本不需要将时间戳与特定位置关联起来,那么就不需要时区,您只需要存储标准化时间戳,例如标准化为 UTC。
关于PHP:管理 DateTime 的正确方法(时间戳 Y2038 Bug 意识!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19445916/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!