首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Mysql】Working with time zones, timestamps and datetimes in Laravel and MySQL

本文旨在揭开这些概念的神秘面纱,并就如何在 Laravel 应用程序和 MySQL 中以合理的方式处理日期和时区给出一些建议和最佳实践。...而 Carbon 又使用 PHP 的日期/时间函数 https://www.php.net/manual/en/ref.datetime.php。...However in reality, only 30 minutes have passed.让我们考虑一下下面的情况:应用程序配置/app.php 中的时区设置为  Europe/Berlin。...:2023-10-13 16:00:00令牌的有效期应为 1 小时,因此我们将创建日期减去当前时间,得到 1.5 小时的差值,这似乎表明令牌已过期。...这样就不必处理任何转换和时区问题。如果您希望根据最终用户的时区显示日期,那么在显示之前将日期转换为最终用户的时区。避免将日期存储在不同的时区。

16130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    日期及时间处理包 Carbon 在 Laravel 中的简单使用

    在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。...2 使用 你需要通过命名空间导入 Carbon 来使用,而不需每次都提供完整的名称。 use Carbon\Carbon; 2.1 获取当前时间 可以同now() 方法获取当前的日期和时间。...如果你不指定参数,它会使用 PHP 配置中的时区: php echo Carbon::now(); //2016-10-14 20:21:20 ?...14 echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50 2.3 日期解析 你还可以使用 parse方法解析任何顺序和类型的日期(...1小时距现在 5月距现在 当比较的值超过另一个值 1小时前 5月前 当比较的值在另一个值之后 1小时后 5月后 你可以把第二个参数设置为 true 来删除“前”、“距现在”等修饰语:

    5.4K20

    Laravel中日期时间处理包Carbon的简单使用

    前言 我们大家在编写 PHP 应用时经常需要处理日期和时间,这篇文章带你了解一下 Carbon – 继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单。...使用 你需要通过命名空间导入 Carbon 来使用,而不需每次都提供完整的名称。 use CarbonCarbon; 获取当前时间 可以同 now() 方法获取当前的日期和时间。...如上所述,默认情况下,Carbon 的方法返回的为一个日期时间对象。...14 echo Carbon::now()->toDateTimeString(); //2016-10-14 20:22:50 日期解析 你还可以使用 parse 方法解析任何顺序和类型的日期(结果为...1小时距现在 5月距现在 3、当比较的值超过另一个值 1小时前 5月前 4、当比较的值在另一个值之后 1小时后 5月后 你可以把第二个参数设置为 true 来删除“前”、“距现在”等修饰语:diffForHumans

    1.3K10

    php时间函数 time()和Date()详解

    结果为:  18h24 Sunday 21 May  这也许看起来将简化繁,但考虑一下如果你所需要的显示的为"Today is Sunday 21 May 2000....这个函数只需要Unix 的时间戳值作为参数,而函数的返回值为日期和时间的数组。  下面是一个例子:  ? ...如果我们需要的并非目前日期和时间的Unix时间戳值,我们该咋办?下面是一些练习可以帮助说明我们后面所要做的。  正如前面所见,mktime()使用以下参数:小时、分、秒、月、天和年。...得到两个不同时间值的差同样也是非常简单。你所需要做的只是将两个时间值转换为Unix的时间戳值,然后两者相减即可。两者之差即为两个时间所相隔的秒数。另外一些算法可以很快地将秒转为天、小时、分和秒。 ...在介绍完PHP是如何处理日期和时间,让我们将ASP中常用的两个函数移植到PHP。第一个函数是DateAdd。

    6.9K60

    Laravel 7.0中 timestamp 取出来的时间慢的8小时问题

    部署博客后,评论的时间不正确,比正常时间慢了8小时; 都是用的 timestamp 字段存储的时间,只有评论留言取出来的时间慢的8小时,其他没有页面没有; 时区改成PRC、缓存也清了, 但是就是不生效;...为了格式化日期以进行序列化,Laravel 将会使用 Carbon 的 toJSON 方法,该方法将生成与 ISO-8601 兼容的日期,包括时区信息及小数秒。...此外,该更改提供了更好的支持,并与客户端日期解析库集成。 此前,日期将序列化为以下格式:2020-03-04 16:11:00 。...使用新格式进行序列化的日期将显示为:2020-03-04T20:01:00.283041Z 如果你希望继续保持之前所用的格式,你可以重写模型的 serializeDate 方法: /** * 为数组...: 'Y-m-d H:i:s'); } 该更改仅影响序列化为数组和 JSON 的模型和模型集合,对数据库中的日期没有影响。

    1.6K10

    laravel - 根据数据库逆向生成迁移文件

    写在最前 因为平时在用Mybatis的时候可以根据数据库逆向生成文件,我就在想laravel是不是也可以这么做,然后去网上找了一大堆,发现都在推“xethron/migrations-generator...”这个库,但是很明显作者从2017年之后,就没有再维护过了,很显然是不适合laravel9.x去用的,所以我找到了一个可以完美平替的库 生成迁移 首先需要在config/database.php配置好数据库的连接信息...# 为所有表生成迁移 php artisan migrate:generate # 为指定表生成迁移 php artisan migrate:generate --tables="table1,table2...视图和外键将在 +1秒内创建....--skip-views 跳过视图 --skip-proc 跳过存储过程 --squash 将所有迁移文件合并至一个文件中 --with-has-table 使用 hasTable 检查是否存在表

    1.6K50

    3分钟短文:说说Laravel通用缓存Cache的使用技巧

    引言 前一期我们介绍了存储用户会话数据到服务器,并通过框架提供的Session类 进行数据读写操作的方法。...代码时间 laravel在设计上做了很巧妙的构思,将缓存相关的类,设计得有插接件的感觉。...laravel日期时间处理默认使用Carbon类库,所以缓存也用到了该库, 并且把用法发挥到极致了。 比如我们可能想动态地设置过期时间,不计算时长,能不能设置为 到某个时间点结束 ? 自然是可以的。...这样来写代码: cache()->put('key', 'value', Carbon::now()->addDay()); put方法第三个参数传入一个Carbon对象,就是默认缓存到指定的时间点。...return User::all(); }); 写在最后 本文通过对缓存助手函数cache()的分析,为大家介绍了Cache类传参的一些关键点。

    2.1K00

    【MQ06】延时队列与优先级队列

    通常,我们会设定一个时间,比如 20 分钟内如果不支付,订单就自动取消。这个功能就可以通过延时队列来实现,下订单后,马上向延时队列发送一条消息,并且设置延迟时间为 20 分钟。...now() 助手函数返回的 Carbon 类型的时间对象,这个对象是 Laravel 框架中的一个组件。...使用代码中的方法,就可以添加按秒延时的队列,具体的延时时间是 0 到 10 的随机数。now() 助手函数还有其它很多方法可以添加分钟、小时、毫秒等等,是非常好用的一套日期时间对象工具。...1672800558 时间:1672800561 注意看,我们生产时间和死信消费的时间正好差 3 秒。...Laravel 中的优先队列 我们还是先来看 Laravel 实现的优先级队列,它其实并不是一个完全的优先级队列实现,因为它针对的其实是不同的队列,而不是同一个队列中给不同的消息赋予不同的优先级。

    23710

    每日一库之 go-carbon,优雅的golang日期时间处理库

    -08-05 14:14:15 通过格式化字符将字符串解析成 Carbon 实例 如果使用的字母与格式化字符冲突时,请使用转义符转义该字母 carbon.ParseByFormat("2020|08|05...,有前导零 2 01-31 02 D 缩写单词表示的周几 3 Mon-Sun Mon j 月份中的第几天,没有前导零 - 1-31 2 S 第几天的英文缩写后缀,一般和j配合使用 2 st/nd/rd/...00-99 06 a 小写的上午和下午标识 2 am/pm pm A 大写的上午和下午标识 2 AM/PM PM g 小时,12 小时格式 - 1-12 3 G 小时,24 小时格式 - 0-23 15...h 小时,12 小时格式 2 00-11 03 H 小时,24 小时格式 2 00-23 15 i 分钟 2 01-59 04 s 秒数 2 01-59 05 c ISO8601 格式日期 - - 2006...与格林威治时间相差的小时数,小时和分钟之间有冒号分隔 - - +07:00 T 时区缩写 - - MST W ISO8601 格式数字表示的年份中的第几周 - 1-52 1 N ISO8601 格式数字表示的星期中的第几天

    3.3K30

    深入研究 Laravel ORM (Laravel Eloquent) 系统 (一) – 概要

    当前支持 MySQL, Postgres, SQL Server 和 SQLite 四款数据库。此外还提供在 Laravel 框架内使用的数据库抽象层 DB 类。...即 Laravel 契约接口,定义了 Laravel 框架核心服务的契约接口 paragonie/random_compat 是一套提供 random_int() 和 random_byte() 等函数在内的随机字符生成类库...Laravel 辅助组件 |---- nesbot Carbon 日期处理组件 |---- paragonine 随机字符生成组件 |----...symfony |---- composer.json composer 包管理配置文件 本系列重点解析 illuminate/database Laravel ORM 组件的分析,仅当有设计到其它组件时再做相关分析...@TODO |---- DetectsDeadlocks.php 判定给定的数据库异常是否为数据库死锁类型异常 |---- DetectsLostConnections.php

    5K20

    Laravel 5.8 新特性系列 —— 缓存有效期单位调整

    从 Laravel 5.8 开始,传递到缓存驱动的表示缓存有效期(TTL)的整型数据单位将会从分钟调整为秒,秒级缓存会使得开发者得以对缓存周期进行更加细粒度的控制,并且符合 PSR-16 标准: The...事物的有效期(TTL)指的是其从保存到失效之间的时间量,TTL的单位通常被定义为秒级,或者一个 DateIntervel 对象。...从 Laravel 5.0 到当前的稳定版本 Laravel 5.7,当你传整数到缓存存储 操作,例如 put() 和 remember(),持续时间都以分钟表示: Cache::remember('active-posts...', 5, function () { return Post::active()->get(); }); 为了简化从早期版本(5.5或更高版本)到 Laravel 5.8 的升级路径,你还可以传递一个...DateTimeInterface 或者 DateInterval 对象到 Cache::put() 方法,而不必将所有调用处的数据单位转化为秒,通过这种方式调用的另一个好处是可以对缓存时间有更加清晰和多维的控制

    1.1K10

    Laravel利用redis和定时任务实现活跃用户统计

    最近在Summer的《Laravel教程-Web开发实战进阶》学到很多东西,以前只会看文档,大概了解Laravel的内容而在实际运用中确不知道该怎样做,碰到一个需求不会立马联想到“这个东西可以用...实现...不是有句话”实践是检验真理的唯一标准“ 所以学习编程还是要多实践多写项目,不然就像我一样拿到东西不知道怎样运用 废话不多,今天分享一下利用redis和定时任务实现活跃用户统计 如果你对redis和定时任务不了解建议去补一下...linux和redis 以及laravel的任务调度 活跃用户算法 我们规定系统每个小时,统计最近7天用户所发表的帖子数和评论数。...所以表示 2>&1 将所有错误信息覆盖到标准输出。.../Commands'); require base_path('routes/console.php'); } } 这样每一个小时就会执行schedule里面的命令,参照laravel

    94020

    实战|仅用18行JavaScript构建一个倒数计时器

    将毫秒除以 1000 可转换为秒:(t/1000) 将总秒数除以 60,然后取余数。你不需要所有的秒,只需要计算分钟数后剩下的那些:(t/1000) % 60 四舍五入到最接近的整数。...这是因为你需要完整的秒数,而不是几分之一秒:Math.floor((t/1000)%60) 重复此逻辑,将毫秒转换为分钟,小时和天。...5.将时钟数据输出为可重复使用的对象 在准备好几天,几小时,几分钟和几秒钟之后,我们现在可以将数据作为可重复使用的对象返回: return { total, days, hours, minutes...6.在页面上显示时钟,并在时钟为零时停止时钟 现在我们有了一个可以吐出剩余天数、小时、分钟和秒数的函数,我们就可以建立我们的时钟了。...这样一来,导航到一个新的页面就不会把结束时间重置到十分钟以后。 这是逻辑: 如果 Cookie 中记录了截止日期,使用该截止日期。

    4.2K41

    Laravel项目的性能优化

    设想一下这种场景:每次你发送一个请求到 App 中,Laravel 都需要去加载不同的配置文件,并且要去打开*.env* 文件读取其中的内容。这种方式性能低下,是不?...在本地开发环境和小项目中它没啥问题,但是项目增长时,就显得不够用了。 所以,考虑下换个更好的驱动例如 Redis。 Laravel 有内置支持它的方式,而你要做的就是 安装 Predis。...我的建议是学会如何使用事件和队列,可以将发送邮件任务交给专门的流程,以致于改善用户使用体验。 我上篇文章专门讲了laravel队列的使用,有兴趣的可以去看一下Laravel队列的使用。...这项工作是通过从数据库中执行查询完成的(查询可能涉及到artists表以及其他的一些表)。 你的主页访问量是 1000 次/小时 。...如果这个排行榜数据的查询次数是 1000次每小时,那么一天下来执行的查询次数就是24000次。 现在,让我们假设这个排行榜是每小时更新一次 。那么,将每次的查询结果缓存一小时如何 ?

    3.8K30

    php 学习笔记之日期时间操作一箩筐

    [php-datetime-overview-doc.png] 格式化日期时间 date : 格式化日期时间 场景 将当前日期时间或者特定日期时间格式化输出为特定格式的字符串,常用于人性化展示信息....I 是否为夏令时 如果是夏令时为1 ,否则为 0 i 有前导零的分钟数 00 到 59 S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th ,可以和 j 一起用 s 秒数,有前导零...备注 格式 说明 参数示例 H hour 小时数 00 到 23 i minute 分钟数 00 到 59 s second 秒数 00 到 59 n month 月份数 01 到 12 j day 天数...> strtotime : 将任何字符串的日期时间描述解析为 Unix 时间戳 场景 将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期....> 日期时间函总结 日期时间函数库是 php 内置的函数库,默认情况下已启用,值得注意的是,日期时间和时区有关,建议首先设置下时区.

    1.7K60

    php 学习笔记之日期时间操作 原

    格式化日期时间 > date : 格式化日期时间 场景 将当前日期时间或者特定日期时间格式化输出为特定格式的字符串,常用于人性化展示信息....到 23| |h|小时,12 小时格式,有前导零|01 到 12| |I|是否为夏令时|如果是夏令时为1 ,否则为 0| |i|有前导零的分钟数|00 到 59| |S|每月天数后面的英文后缀,2 个字符...> > strtotime : 将任何字符串的日期时间描述解析为 Unix 时间戳 场景 将英文日期解析成时间戳,比直接解析日期方便,采用自然语义而不是编程语言进行转换日期....说明 本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数,其值相对于 now 参数给出的时间,如果没有提供此参数则用系统当前时间...> 日期时间函总结 日期时间函数库是 php 内置的函数库,默认情况下已启用,值得注意的是,日期时间和时区有关,建议首先设置下时区.

    1.9K50

    常用模块~PHP时间戳与日期.

    strtotime( ) --- 将任何英文文本的日期时间描述解析为 Unix 时间戳 格式:int strtotime ( string $time [, int $now ] ) 案例: //系统时间戳..."获取3天前的时间戳:".strtotime('-3 day'); echo "获取3天后的时间戳:".strtotime('3 day'); 第2章 在 PHP 中获取日期和时间 getdate -...格式:string date ( string format , int timestamp ) 返回将整数 timestamp 按照给定的格式字串而产生的字符串。...H:i:s");//不写第二个参数默认是当前时间戳 第3章 修改PHP的默认时区 修改PHP的默认时区有两种方式: 1、修 php.ini 配置文件:**date.timezone = PRC** 2...如果给出了参数并且其值等价于 TRUE,microtime() 将返回一个截取为小数点4带秒数为浮点数。

    3.5K00

    Laravel5.2之Redis保存页面浏览量

    开发环境:Laravel5.1+MAMP+PHP7+MySQL5.5 Redis依赖包安装与配置 Redis就和MySQL一样,都是数据库,只不过MySQL是磁盘数据库,数据存储在磁盘里,而Redis是内存数据库...Redis数据存储类型比较多,包括:字符串类型、哈希类型、列表类型、集合类型和有序集合类型,而不像MySQL主要只有三类:字符串类型、数字类型和日期类型。Redis可作缓存系统、队列系统。...phpredis是C语言写的一个PHP扩展,和predis功能差不多,只不过作为扩展效率高些,phpredis可以作为扩展装进PHP语言中,不过这里没用到,就不装了。...,这样就不用等10分钟后再更新view_count了, //如该篇post在100秒内就达到了30访问量,就在3分钟时更新下MySQL,并把缓存抹掉,下一次请求就从MySQL...中请求到最新的view_count, //当然,100秒内view_count还是缓存的旧数据,极端情况300秒内都是旧数据,而缓存里已经有了29个新增访问量

    8.8K41
    领券