`
OrangeHolic
  • 浏览: 260922 次
  • 来自: 北京
社区版块
存档分类
最新评论

时间连续处理函数(PHP)

    博客分类:
  • PHP
 
阅读更多
前几天看他人项目代码,有一功能为统计最近1月某功能的使用总量,代码实现竟然不做时间连续处理,出现下面情形。



N星期前,也曾看到部分代码,时间连续处理竟然是以一天为时间间隔查询数据库,最近1月的统计竟然需要查询30+次。


在此列一下按照日统计数据的sql和自己写的一个时间连续处理函数.

1.测试表为
test
字段1:increase(int型,表每天增加)
字段2:optime(int型,为时间戳,表示记录增加时间)

--按日查询--
$start = strtotime('2012-02-21');
$end = strtotime('2012-03-03');
$sql="select date(optime) as time , sum(increase) as increase from test where optime between {$start} and {$end} group by date(optime)";


按月查询+按年查询 用month和year函数即可。


2.时间连续处理函数
/**
 * @param $start 开始时间戳
 * @param $end 结束数据戳
 * @param $array 查询结果
 * @return array dateMap数据
 */
function dateMap($start,$end,$array){
    $dates = range($start, $end, 24*60*60);
    $dates = array_map(create_function('$v', 'return date("Y-m-d", $v);'), $dates);

    $zero = array_fill_keys($dates,0);
    $result = array_merge($zero,$array);

    return $result;
}

测试如下
$start = strtotime('2012-02-21');
$end = strtotime('2012-03-03');

$other=array('2012-02-25'=>20,'2012-02-21'=>30,'2012-03-01'=>40,'2012-02-27'=>50);


结果
Array
(
    [2012-02-21] => 30
    [2012-02-22] => 0
    [2012-02-23] => 0
    [2012-02-24] => 0
    [2012-02-25] => 20
    [2012-02-26] => 0
    [2012-02-27] => 50
    [2012-02-28] => 0
    [2012-02-29] => 0
    [2012-03-01] => 40
    [2012-03-02] => 0
    [2012-03-03] => 0
)



还有一个需注意的地方

$end=strtotime('2012-03-30');
$start=strtotime('-1 month',$end);
echo date('Y-m-d',$start);

结果是:2012-03-01  因为-1 month的实际实现就是-30天而已,这个应该是个BUG吧。  可以用下面方式来实现:

$start=strtotime('-1 month',strtotime(date('Y-m-01 00:00:00',$end)));
echo date('Y-m-d',$start);




  • 大小: 9.3 KB
分享到:
评论

相关推荐

    常用PHP5函数小全

    - **功能描述**:`uniqid()` 函数根据以微秒计算的当前时间生成一个唯一的ID。这对于生成会话ID、临时文件名等非常有用。 - **语法**: ```php uniqid([string $prefix = ''], [bool $more_entropy = false]): ...

    PHP中一些可以替代正则表达式函数的字符串操作函数

    在处理大量数据的场景下,使用implode()可以有效地减少处理时间。 最后,我们来探讨strpos()函数,它用于查找字符串中子字符串首次出现的位置。strpos()函数是区分大小写的,并且它的效率往往高于正则表达式的查找...

    常用PHP函数小全

    `time_sleep_until()` 函数暂停脚本直到指定的时间。这在需要精确控制执行时间的情况下很有用,例如定时任务。 #### time_nanosleep() `time_nanosleep()` 函数类似于 `sleep()`,但它可以提供更精细的控制(纳秒...

    PHP常用函数之格式化时间操作示例

    值得注意的是,这些函数在处理跨月份和跨年份的时间时依然有效,因为它们考虑了时间的循环性和日期的连续性。在PHP中,只要正确使用这些基础函数并结合逻辑判断,就可以实现复杂的时间处理功能。而本文所介绍的这些...

    php函数iris整理

    **1.1 Array处理函数** - **`array_change_key_case()`**: 将数组的所有键名转换为小写或大写。 - **`array_chunk()`**: 将数组分割成多个数组块。 - **`array_column()`**: 从输入数组的每条记录中抽取一个字段...

    MySQL_API函数精选.pdf

    - **函数:** 提供了处理日期和时间值的函数,例如 `mysql_datetime()`。 **2.10 CAPI 线程函数介绍** - **线程函数:** 提供了一组用于管理线程的函数,以确保并发访问数据库的安全性。 **2.11 CAPI 嵌入式...

    PHP连续签到功能实现方法详解

    6. **时间处理**:利用`strtotime()`和`date()`函数处理与时间相关的逻辑,比如计算今天开始和结束的时间戳。 ### PHP与MySQL交互 实现PHP与MySQL数据库的交互,通常有以下步骤: 1. **数据库连接**:使用PDO或者...

    PHPCalendar函数简介.docx

    总的来说,PHPCalendar 扩展为 PHP 开发者提供了一套强大的工具,能够方便地处理日期和时间的复杂转换,尤其是在涉及多种历法的应用场景中。了解并熟练运用这些函数和常量,可以极大地提高日期处理的效率和准确性。

    php实现的通用图片处理类

    例如,可以使用构造函数接收图片资源或图片路径,然后通过方法链的形式提供连续的图片处理操作。最终保存或输出处理后的图片时,也可以提供多种格式供选择。 需要注意的是,实际开发中,由于图片处理操作通常是计算...

    PHP开发笔记系列(三)-日期与时间

    除了创建日期对象,PHP还提供了`date()`和`time()`函数来处理简单的日期和时间。`date()`函数用于格式化当前或者指定的Unix时间戳,而`time()`函数返回当前Unix时间戳: ```php echo date('Y-m-d H:i:s', time()); ...

    比较时间段一与时间段二是否有交集的php函数

    最后,要注意在实际的Web开发环境中处理时间问题时,可能还会涉及时区的转换、夏令时的影响等因素,因此在处理跨时区的时间段交集问题时,开发者需要额外注意这些问题以保证函数的准确性和适用性。

    PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)

    PHP提供了一个内建函数`php_strip_whitespace()`,用于删除源代码中的注释和空白,但此函数在处理`heredoc`语法时可能会遇到问题。为了解决这个问题,我们可以使用自定义的`strip_whitespace`函数,如题目中所提及的...

    PHP array_reverse() 函数原理及实例解析

    该函数在处理数据排序时非常实用,尤其是在需要倒序显示数组内容的场景中。`array_reverse()`自PHP 4版本起就被引入,并在后续的PHP 5和PHP 7版本中得到保持。 **函数定义:** `array_reverse(array $array, bool ...

    php5手册.chm

    "counter" 扩展 - 一个连续的实例 PHP 5 构建系统 扩展的结构 PDO 驱动 扩展相关 FAQ Zend Engine 2 API 参考 Zend Engine 2 操作码列表 Zend Engine 1 FAQ — FAQ:常见问题 一般信息 邮件列表 获取 PHP 数据库问题...

    深入php函数file_get_contents超时处理的方法详解|angluo-php-95971.pdf

    关于PHP中file_get_contents函数超时处理的方法,这篇文章进行了深入的解析和介绍。file_get_contents函数作为PHP中用于读取文件或者远程URL内容的内置函数,非常方便和强大。但就像所有涉及网络的函数一样,file_...

    签到系统(PHP)

    PHP提供了丰富的date和time函数,可以方便地获取当前时间,格式化日期,比较时间等。 5. 错误处理和安全性:为了确保系统的稳定运行,需要对可能出现的错误进行处理,如无效的登录尝试、未找到用户、数据库连接失败...

    PHP 5.4.40 Released 中文手册

    •"counter" 扩展 - 一个连续的实例 •PHP 5 构建系统 •扩展的结构 •PDO 驱动 •扩展相关 FAQ •Zend Engine 2 API 参考 •Zend Engine 2 操作码列表 •Zend Engine 1 •FAQ — FAQ:常见问题•一般信息 •邮件...

    php5.5.10中文手册下载[官方版][2014-02-20最后编译]

    ◦"counter" 扩展 - 一个连续的实例 ◦PHP 5 构建系统 ◦扩展的结构 ◦PDO 驱动 ◦扩展相关 FAQ ◦Zend Engine 2 API 参考 ◦Zend Engine 2 操作码列表 ◦Zend Engine 1 •FAQ — FAQ:常见问题◦一般信息 ◦邮件...

    PHP5最新中文手册CHM(2013年10月更新)

    ■"counter" 扩展 - 一个连续的实例 ■PHP 5 构建系统 ■扩展的结构 ■PDO 驱动 ■扩展相关 FAQ ■Zend Engine 2 API 参考 ■Zend Engine 2 操作码列表 ■Zend Engine 1 ■FAQ — FAQ:常见问题 ■一般信息 ■邮件...

    hive常用函数参考手册.docx

    6. **日期函数**:处理日期和时间的操作,如`ADD_MONTHS`增加月份等。 7. **条件函数**:如`IF`和`CASE WHEN`用于根据条件选择不同的值。 8. **字符串函数**:如`CONCAT`连接字符串等。 #### 四、聚合函数 聚合函数...

Global site tag (gtag.js) - Google Analytics