mongodb 时区问题及 Date 类型相关操作
2019-03-25 16:56
1296 查看
mongoDB 的默认时区为 UTC(协调世界时),和我们的当前时区相差八个小时,所以当我们插入当前时间,之后使用
find()查询时会发现有异常,使用时需要注意。
Robo3T
Robo3T 是 mongodb 的可视化工具,默认情况查询数据会显示 UTC;
可以通过修改
Display Dates in ...选项,选择
Local Timezone
重新查询即为当前时区时间。
mongo shell
命令行下可以通过
get函数获取当前时区时间
使用
a = db.zhangcong.findOne({"name":"test1"}).create_at获取到时间字段,再使用
a.getHours()即为当前时区的小时数字
暂时没有查到如何直接获取完整的当前时区的时间格式
laravel
1. jenssegers/mongodb
- laravel 中的一个 mongodb 支持包,使用 composer 安装即可
- 在
config/database.php
中配置 mongo 的信息
'mongodb' => array( //MongoDB 'driver' => 'mongodb', 'host' => '127.0.0.1', //数据库服务器的ip 'port' => 27017, //数据库服务器上mongodb服务对应的端口 'database' => 'test', //数据库名称 'username' => '', 'password' => '', 'options' => array( 'database' => 'test' // 要使用的数据库 ) ),
4. date 相关
1. 增
- 在对应 model 中,设置
CREATED_AT
UPDATED_AT
设置为你需要的字段,即可自动生成时间类型;
这里要注意,此处的 model 要继承 Jenssegers\Mongodb\Eloquent\Model
- 如果除创建和更新外,想自定义插入一条时间记录,获取时间后插入,时间戳会被存为
int
类型,格式化后的时间会被存为string
类型,如果需要Date
类型,可以使用fromDateTime
进行转化后在入库;
2. 查
- 将
config/app.php
中的timezone
设为 PRC 后 laravel 会自动处理查询出的时间; - 对于自定义插入的一个
Date
类型字段,查出后会如下所示{"$date":{"$numberLong":"1544544000000"}}
,想要正常格式化为可读时间格式,可在 model 中设置protected $dates = ['自定义字段'];
,即可对时间进行格式化。
相关文章推荐
- Java JSON Date类型数据处理相关问题
- mongodb里日期类型的时区问题
- 使用mybatis框架执行Oracle数据库日期类型操作的时Date类型精确不到时分秒的问题
- Date, TimeZone, MongoDB, java中date的时区问题
- mongodb:date格式时间查询相关问题
- Date, TimeZone, MongoDB, java中date的时区问题
- Spring MVC中对Date类型操作的一些问题解决
- java数据类型相关的问题
- redis学习篇(四)-----List类型及相关操作
- 常见问题及解决办法 整理之8-2(日期的相关操作)
- JS数据类型及相关操作
- MongoDB 时区问题
- Axure RP Pro - 相关问题 - 与IFrame部件中的页面互操作
- <问题解决>数据库date类型数据前端页面显示格式不正确问题
- PostgreSQL 中日期类型转换与变量使用及相关问题
- mongodb插入datetime类型所用函数appendDate的参数Date_t详解
- JavaScript类型相关的常用操作总结
- javascript中对Date类型的常用操作小结
- Java编程之Date的相关操作
- Hibernate Text类型问题 插入修改操作只保存一部分