- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在我的代码中,我使用 DateTime
对象来操作日期,然后将它们转换为时间戳,以便将它们保存在一些 JSON 文件中。
出于某些原因,我希望拥有与 DateTime 相同的东西(或类似的东西),但精度为微秒(在插入 JSON 文件时我会将其转换为 float )。
我的问题是:是否有一个类似于 DateTime
,但也可以处理 微秒 的 PHP 对象?
目标是能够用对象操纵微时间。
在date()文档中,有些内容表明 DateTime 可以用微秒创建,但我找不到方法。
u Microseconds (added in PHP 5.2.2). Note that date() will always generate 000000 since it takes an integer parameter, whereas DateTime::format() does support microseconds if DateTime was created with microseconds.
我尝试用浮点值 (microtime(true)
) 设置 DateTime 对象的时间戳,但它不起作用(我认为它将时间戳转换为 int,导致微秒的损失)。
我是这样尝试的
$dt = new DateTime();
$dt->setTimestamp(3.4); // I replaced 3.4 by microtime(true), this is just to give an example
var_dump($dt);
var_dump($dt->format('u'));
如您在此处所见,.4
未被考虑在内(尽管我们可以使用对应于微秒的 u
格式)。
object(DateTime)[1]
public 'date' => string '1970-01-01 01:00:03' (length=19)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/Berlin' (length=13)
string '000000' (length=6)
编辑:我看到这段代码,它允许将微秒添加到 DateTime,但在创建 DateTime 之前我需要对微秒进行大量修改。因为我会经常使用它,所以我想在获取“microtime 对象”之前对 microtime 做尽可能少的修改。
$d = new DateTime("15-07-2014 18:30:00.111111");
最佳答案
这是创建包含微时间的 DateTime 对象的一个非常简单的方法。
我没有深入研究这个问题,所以如果我遗漏了什么,我深表歉意,但希望对你有所帮助。
$date = DateTime::createFromFormat('U.u', microtime(TRUE));
var_dump($date->format('Y-m-d H:i:s.u'));
我对其进行了测试并尝试了各种其他方法来使这项工作看起来合乎逻辑,但这是适用于 7.1 之前的 PHP 版本的唯一方法。
但是有一个问题,它返回了正确的时间部分而不是正确的日期部分(因为很可能是 UTC 时间)这就是我所做的(恕我直言,似乎仍然更简单):
$dateObj = DateTime::createFromFormat('U.u', microtime(TRUE));
$dateObj->setTimeZone(new DateTimeZone('America/Denver'));
var_dump($dateObj->format('Y-m-d H:i:s:u'));
这是一个工作示例:http://sandbox.onlinephpfunctions.com/code/66f20107d4adf87c90b5c8c914393d4edef180a2
更新
正如评论中指出的,从 PHP 7.1 开始,Planplan 推荐的方法似乎优于上面显示的方法。
所以,对于 PHP 7.1 及更高版本,使用下面的代码可能会更好,而不是上面的代码:
$dateObj = DateTime::createFromFormat('0.u00 U', microtime());
$dateObj->setTimeZone(new DateTimeZone('America/Denver'));
var_dump($dateObj->format('Y-m-d H:i:s:u'));
请注意,以上内容仅适用于 PHP 7.1 及以上版本。以前版本的 PHP 将返回 0 来代替 microtime,因此会丢失所有 microtime 数据。
这是一个更新的沙盒,显示了两者: http://sandbox.onlinephpfunctions.com/code/a88522835fdad4ae928d023a44b721e392a3295e
注意:在测试上述沙盒时,我从未见过 Planplan 提到他经历过的 microtime(TRUE) 故障。然而,更新后的方法似乎记录了 KristopherWindsor 建议的更高级别的精度。
注意 2:请注意,由于在 PHP DateTime 代码中对微秒的处理做出了基本决定,因此任何一种方法都可能会失败,这种情况很少见。要么:
感谢 Sz 的提醒。 (见评论)。
关于php - 带微秒的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691428/
运行 PostgreSQL(7.4 和 8.x),我认为这是可行的,但现在我遇到了错误。 我可以单独运行查询,它工作得很好,但如果我使用 UNION 或 UNION ALL,它会抛出错误。 这个错误:
我试图为我的应用程序创建一个导航,使用抽屉导航我的 fragment 之一(HomeFragment)有一个 ViewPager,可容纳 3 个 fragment (Bundy Clock、Annou
以我目前正在开发的应用为例: - 它有一个包含多个项目的抽屉导航;现在有两个项目让我感兴趣,我将它们称为 X 和 Y。 X 和 Y 都在单击时显示包含 x 元素或 y 元素列表的 fragment 选
我有一个形状为 (370,275,210) 的 NumPy 数组,我想将其重新整形为 (275,210,370)。我将如何在 Python 中实现这一点? 370是波段数,275是行数,210是图像包
我们如何与被子 UIViewController 阻止的父 UIViewController(具有按钮)交互。显然,触摸事件不会通过子 Nib 。 (启用用户交互) 注意:我正在加载默认和自定义 NI
我是 Jpa 新手,我想执行过程 我的代码如下 private static final String PERSISTENCE_UNIT_NAME = "todos"; private static
与安装了 LAMP 的 GCE 相比,选择与 Google Cloud SQL 链接的 GCE 实例有哪些优势? 我确定 GCE 是可扩展的,但是安装在其上的 mysql 数据库的可扩展性如何? 使用
这个问题在这里已经有了答案: Value receiver vs. pointer receiver (3 个答案) 关闭 3 年前。 我刚接触 golang。只是想了解为 Calc 类型声明的两种
我不小心按了一个快捷键,一个非常漂亮的断线出现在日期上。 有点像 # 23 Jun 2010 -------------------- 有人知道有问题的快捷方式吗?? (我在 mac 上工作!) 在
我正在Scala中编写正则表达式 val regex = "^foo.*$".r 这很好,但是如果我想做 var x = "foo" val regex = s"""^$x.*$""".r 现在我们有
以下 XML 文档在技术上是否相同? James Dean 19 和: James Dean 19 最佳答案 这两个文档在语义上是相同的。在 X
我在对数据帧列表运行稳健的线性回归模型(使用 MASS 库中的 rlm)时遇到问题。 可重现的示例: var1 <- c(1:100) var2 <- var1*var1 df1 <- data.f
好的,我有一个自定义数字键盘,可以在标签(numberField)中将数字显示为 0.00,现在我需要它显示 $0.00。 NSString *digit = sender.currentTitle;
在基于文档的应用程序中,使用 XIB 文件,创建新窗口时其行为是: 根据最后一个事件的位置进行定位和调整大小 window 。 如果最后一个事件窗口仍然可见,则新窗口 窗口应该是级联的,这样它就不会直
我想使用参数进行查询,如下所示: SELECT * FROM MATABLE WHERE MT_ID IN (368134, 181956) 所以我考虑一下 SELECT * FROM MATABLE
我遇到一些性能问题。 我有一个大约有 200 万行的表。 CREATE TABLE [dbo].[M8]( [M8_ID] [int] IDENTITY(1,1) NOT NULL,
我在 jquery 中的按键功能遇到问题。我不知道为什么按键功能不起作用。我已经使用了正确的 key 代码。在我的函数中有 2 个代码,其中包含 2 个事件键,按一个键表示 (+) 代码 107 和(
我想显示音频波形,我得到了此代码,它需要.raw音频输入并显示音频波形,但是当我放入.3gp,.mp3音频时,我得到白噪声,有人可以帮助我如何使其按需与.3gp一起使用使用.3gp音频运行它。 Inp
我无法让 stristr 函数返回真值,我相信这是因为我的搜索中有一个 $ 字符。 当我这样做时: var_dump($nopricecart); 完整的 $nopricecart 值是 $0 ,我得
如果我有这样的循环: for(int i=0;i O(n) 次。所以do some执行了O(n)次。如果做某事是线性时间,那么代码片段的复杂度是O(n^2)。 关于algorithm - 带 If 语
我是一名优秀的程序员,十分优秀!