php中查询时间

简介: 在做查询过程中,例如要实现查上个月从第一天到最后一天的佣金(提成),那我们在程序实现过程中就要让程序在上个月的范围内查询,第一天是比较好办,但最后一天就不定,要去写段函数进行月份及年份判断来得出上个月共有多少天.

在做查询过程中,例如要实现查上个月从第一天到最后一天的佣金(提成),那我们在程序实现过程中就要让程序在上个月的范围内查询,第一天是比较好办,但最后一天就不定,要去写段函数进行月份及年份判断来得出上个月共有多少天.那就比麻烦,还有获取当前月份,当前年份等常规日期获取函数

1.获取本月第一天凌晨0点0分0秒和最后一天23点59分59秒

$BeginDate = date('Y-m-01 00:00:00', strtotime(date("Y-m-d 00:00:00")));
$beginTime = $BeginDate;
$endTime = date('Y-m-d 23:59:59', strtotime("$BeginDate +1 month -1 day"));
var_dump(array('beginTime'=>$beginTime,'endTime'=>$endTime));
输出:array(2) { ["beginTime"]=> string(19) "2014-07-01 00:00:00" ["endTime"]=> string(19) "2014-07-31 23:59:59" }

 

2.获取今天凌晨0点0分0秒和今天23点59分59秒

$beginTime=date('Y-m-d 00:00:00');
$endTime = date('Y-m-d 23:59:59');
var_dump(array('beginTime'=>$beginTime,'endTime'=>$endTime));
输出:array(2) { ["beginTime"]=> string(19) "2014-07-04 00:00:00" ["endTime"]=> string(19) "2014-07-04 23:59:59" }

 

2.获取上个月第一天及最后一天.
echo date('Y-m-01', strtotime('-1 month'));
echo "<br/>";
echo date('Y-m-t', strtotime('-1 month'));
echo "<br/>";
输出:
2014-06-01
2014-06-30


2.获取当月第一天及最后一天.
$BeginDate=date('Y-m-01', strtotime(date("Y-m-d")));
echo $BeginDate;
echo "<br/>";
echo date('Y-m-d', strtotime("$BeginDate +1 month -1 day"));
echo "<br/>";
输出:
2014-07-01
2014-07-31

3.获取当天年份、月份、日及天数.
echo " 本月共有:".date("t")."天";
echo " 当前年份".date('Y');
echo " 当前月份".date('m');
echo " 当前几号".date('d');
echo "<br/>";
输出本月共有多少天,当前年份,月份,号份
本月共有:31天
当前年份2014
当前月份07
当前几号04

 

4.获取当前时间和当前月的最后一天

echo date('Y-m-d H:m:s', time());
echo "<br/>";
echo date('Y-m-t', time());
输出:
2014-07-04 15:07:29
2014-07-31

 

4.使用函数及数组来获取当月第一天及最后一天,比较实用,出自网友.
function getthemonth($date)
{
$firstday = date('Y-m-01', strtotime($date));
$lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day"));
return array($firstday,$lastday);
}
$today = date("Y-m-d");
$day=getthemonth($today);
echo "当月的第一天: ".$day[0]." 当月的最后一天: ".$day[1];
echo "<br/>";

下面是各种参数代表的意思:

Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
z - 一年中的第几天; 如: "0" 至 "365"
F - 月份,英文全名; 如: "January"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
M - 月份,三个英文字母; 如: "Jan"
t - 指定月份的天数; 如: "28" 至 "31"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
h - 12 小时制的小时; 如: "01" 至 "12"
H - 24 小时制的小时; 如: "00" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
i - 分钟; 如: "00" 至 "59"
s - 秒; 如: "00" 至 "59"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
U - 总秒数
D - 星期几,三个英文字母; 如: "Fri"
l - 星期几,英文全名; 如: "Friday"
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
a - "am" 或是 "pm"
A - "AM" 或是 "PM"

 

还有一种情况,如果你发现自己的php输出的时间总是和你当前的时间相差8小时,恭喜你,你踩到坑了,有下面几种方法:

结果取出来显示的时间总是于本地时间相差8个小时,我的本机是中国标准时间(GTM+8),问题应该是date()取的时间是格林威治时间,那应该怎么配置一下PHP服务器呢?

下面是我在网上找到的解决方法

问题原因所在
从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时。

有以下3中方法可以恢复正常的时间。
1、最简单的方法就是不要用php5.1以上的版本
2、如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (‘XXX’);
3、一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
date.timezone = PRC,重启http服务(如apache2或iis等)即可
【相关注解:】↓
关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
你可以到http://www.php.net/docs.php上查到更多的地区
由于程序最后还是会把地名转为时区来计算,所以当你使用的不是内置的区域的时候,程序将自动使用格林威治标准时间。

请注意
如果没有修改php.ini的权限,那么应该在调用date()方法之前加上date_default_timezone_set(‘PRC’);
参数要加上双引号或单引号

修改php.ini时,
date.timezone = PRC
后面的参数不需要使用引号

 

而我想说的是某些框架还会默认时区,比如laravel(版本是5.2.2),睁大你的眼睛,在laravel\config\app.php目录的第55行有这么一句:

'timezone' => 'UTC',
你哭了没有,我快哭了。把这个UTC改成PRC或者Asia/Shanghai,我在想如果这个词拼错了怎么办,这么长,好蛋疼。

作者:Tyler Ning
出处:http://www.cnblogs.com/tylerdonet/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址williamningdong@gmail.com  联系我,非常感谢。

目录
相关文章
|
6月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
JSON API PHP
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
1061 0
|
3月前
|
前端开发 关系型数据库 MySQL
最新黑名单查询录入系统PHP网站源码
最新黑名单查询录入系统PHP网站源码 前端html 后端layui 操作部分都采用API接口的方式实线 集结了layui表格的多数据操作,添加,批量删除,分页,单项删除 后台数据修改采用绑定参数的形式来进行修改可以很好的预防数据库注入,当然如果你想要测试这个防注入的你也可以尝试一下 PHP版本70+ 数据库Mysql 5.6 上传程序访问 http://你的域名/install 安装
93 0
|
5月前
|
JavaScript 前端开发 PHP
PHP在线生成查询产品防伪证书系统源码
PHP在线生成查询产品防伪证书系统源码,源码自带90套授权证书模板,带PSD公章模板,证书PSD源文件。 环境要求:PHP+MYSQL,PHP 版本请使用PHP5.1 ~5.3。
166 3
|
传感器 关系型数据库 MySQL
php语句:MySQL指定分区表跨分区根据时间条件快速查询记录的封装函数
php语句:MySQL指定分区表跨分区根据时间条件快速查询记录的封装函数
133 0
|
存储 数据采集 JavaScript
php对接阿里云API调用企业税号查询的高级实战案例解析(下拉筛选查询、远程调用API、xm-select组件应用)
php对接阿里云API调用企业税号查询的高级实战案例解析(下拉筛选查询、远程调用API、xm-select组件应用)
667 31
|
存储 SQL 数据库连接
php查询数据(日期查询)和fastadmin的日期查询
php查询数据(日期查询)和fastadmin的日期查询
|
关系型数据库 MySQL PHP
php读取MySQL获取分区名称及属性信息的查询语句
php读取MySQL获取分区名称及属性信息的查询语句
102 0
|
设计模式 缓存 API
PHP中的GraphQL和API查询语言
在现代Web开发中,应用程序接口(API)起着至关重要的作用,它们允许不同系统之间进行数据交换和通信。为了有效地处理数据请求和响应,开发人员需要一种灵活、强大且易于使用的查询语言。GraphQL作为一种新兴的API查询语言,提供了一种优雅而高效的方式来定义和获取数据。本文将探讨PHP中的GraphQL和API查询语言,介绍GraphQL的基本概念、语法和优势,并通过具体的代码示例来帮助读者更好地理解和应用GraphQL。
168 0
下一篇
无影云桌面