如何解决碳时间戳属性返回错误的日期毫秒
我正在尝试仅根据日、月和年返回解析到当前服务器时区(以 UTC 存储)的日期。出于这个原因,我有一个看起来像这样的函数:
private function getFormattedDate(string $stringDate): array
{
$date = Carbon::createFromFormat(
'Y-m-d',$stringDate,config('app.timezone')
);
return [
'date' => $date->timestamp,'timezone' => $date->timezoneName,];
}
问题是数组中的 'date'
键总是例如 1577113131(以及每次执行该方法时的连续数字),因此:
- 第一次执行:1577113515
- 第二次执行:1577113525
- 第三次执行:1577113548
- 等等...
尽管时间戳表示 Y-m-d 中的正确日期,但每次执行该方法时都不应该发生变化。
那么,我该如何解决这个问题并获得毫秒级的时间戳?我已经打印了 'date'
Carbon 对象中的内容,它似乎具有正确的日期信息:
^ Carbon\Carbon @1577113734 {#1048
#constructedobjectId: "00000000212d5614000000005c7c5f51"
#localMonthsOverflow: null
#localYearsOverflow: null
#localStrictModeEnabled: null
#localHumanDiffOptions: null
#localToStringFormat: null
#localSerializer: null
#localMacros: null
#localGenericMacros: null
#localFormatFunction: null
#localTranslator: null
#dumpProperties: array:3 []
#dumpLocale: null
date: 2019-12-23 10:08:54.0 America/Bogota (-05:00)
}
预期输出为:
'date' => 1577113734000,'timezone' => 'America/Bogota'
考虑到日期:2019-12-23 10:08:54.0 America/Bogota (-05:00)
解决方法
让我们试试这个,它应该对你有用
django.db.utils.ProgrammingError: relation "token_blacklist_outstandingtoken" does not exist
LINE 1: INSERT INTO "token_blacklist_outstandingtoken" ("user_id","...
你可以像这样改变你的例子:
$format = 'Y-m-d';
$date = Carbon::createFromFormat($format,'2009-02-15');
$nowInMilliseconds = (int) ($date->timestamp . str_pad($date->milli,3,'0',STR_PAD_LEFT));
echo $nowInMilliseconds;
,
使用!
:
$date = Carbon::createFromFormat(
'!Y-m-d',$stringDate,config('app.timezone')
);
https://www.php.net/manual/en/datetime.createfromformat.php
createFromFormat
是一个原生 PHP 函数,默认情况下它采用当前时间(您未指定单位的当前值),如果使用 !
前缀,则每个都取最小值(所以0 表示小时/分钟/秒)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。