搜索
首页php教程PHP源码根据给定的日期格式'YYYY-mm-dd',获取该日期所在周的起始日期

php代码

/**
 * 获取一年中所有星期的起始日期
 * @param $year 格式 'YYYY'
 * 返回二维数组 下标 key1值对应一年中某一天所在周的实际年份  key2值对应一年中某一天所在的周数[一年中第几周] 
 * 返回false 日期格式错误
 */
function get_all_weeks($year){
    $week_arr = array();
    $year = intval(trim($year));
    $preg = "/^\d{4,}$/";
    if(!preg_match($preg, $year)){
        return false;
    }   
    $begin_day = $year . '-01-01';
    $end_day = $year . '-12-31';
    //一年第一个星期一
    if(date('w',strtotime($begin_day))!=1){
        $begin_day = date('Y-m-d',strtotime("next monday", strtotime($begin_day)));
    }
    //第一个星期一所在周数
    $begin_week_num = intval(date('W',strtotime($begin_day)));
    //一年最后一个星期天
    if(date('w',strtotime($end_day))!=0){
        $end_day = date('Y-m-d',strtotime("last sunday",strtotime($end_day)));
        //存在跨年的星期,跨年所在周星期一
        $end_day_next = date('Y-m-d',strtotime($end_day)+24*60*60);
        //跨年星期所属年份与所在周数
        $stride_year = date('o',strtotime($end_day_next));
        $stride_weeknum = intval(date('W',strtotime($end_day_next)));
    }
    //最后一个星期天所在周数
    $end_week_num = intval(date('W',strtotime($end_day)));
    //一年第一个周一为一年的第一周或者第二周
    if($begin_week_num!=1){
        $i=2;
    }else{
        $i=1;
    }
    $j = 0;
    for($i;$i<=$end_week_num;$i++){      
        $start_date = date("Y-m-d", strtotime("$begin_day $j week"));
        $end_day = date("Y-m-d", strtotime($start_date . &#39;+6 day&#39;));
        $week_arr[$year][$i] = array(
            $start_date,
            $end_day
        );
        $j++;
    }
    if($end_day_next){
        $week_arr[$stride_year][$stride_weeknum] = array(
            $end_day_next,
            date("Y-m-d", strtotime($end_day_next . &#39;+6 day&#39;))
        );
    }
    return $week_arr;
}
//demo_调用
/*
$year = &#39;2013&#39;;
if(get_all_weeks($year)){
    var_dump(get_all_weeks($year));
}else{
    echo &#39;日期格式出错&#39;;
}
*/
/**
 * 获取某一天所在周的起始日期
 * 依赖 function get_all_weeks
 * @param $day 格式:&#39;YYYY-mm-dd&#39;
 * 返回false 日期格式错误
 * 正确,返回json "{"begin_day":"YYYY-mm-dd","end_day":"YYYY-mm-dd"}"
 */
function get_day_week($day){
    $date_arr = explode(&#39;-&#39;, trim($day));
    if(!checkdate(intval($date_arr[1]), intval($date_arr[2]), intval($date_arr[0]))){
        return false;
    }
    $year = date(&#39;Y&#39;,strtotime($day));
    $weeks = get_all_weeks($year);
    //某一天所属的年份与周数
    $real_year = date(&#39;o&#39;,strtotime($day));
    $week_num = intval(date(&#39;W&#39;,strtotime($day)));
    if(!empty($weeks[$real_year][$week_num][0]))
        $begin_day = $weeks[$real_year][$week_num][0];
    if(!empty($weeks[$real_year][$week_num][1]))
        $end_day = $weeks[$real_year][$week_num][1];
    //跨年周数值存储于上一年中
    if(empty($begin_day)||empty($end_day)){
        $year = date(&#39;Y&#39;,strtotime($day))-1;
        $weeks = get_all_weeks($year);
        $real_year = date(&#39;o&#39;,strtotime($day));
        $week_num = intval(date(&#39;W&#39;,strtotime($day)));
        if(!empty($weeks[$real_year][$week_num][0]))
            $begin_day = $weeks[$real_year][$week_num][0];
        if(!empty($weeks[$real_year][$week_num][1]))
            $end_day = $weeks[$real_year][$week_num][1];        
    }
    $the_day = array(
        &#39;begin_day&#39; => $begin_day,
        &#39;end_day&#39; => $end_day
    );
    $the_day = json_encode($the_day);
    return $the_day;
}
//demo_调用
/*
$day = &#39;2014-01-01&#39;;
if(get_day_week($day)){
    var_dump(get_day_week($day));
}else{
    echo &#39;日期格式出错&#39;;
}
*/
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Ubuntu17.10顶栏怎么显示日期与计秒?Ubuntu17.10顶栏怎么显示日期与计秒?Jan 08, 2024 am 10:41 AM

Ubuntu17.10顶栏默认只有当前的时间,没有日期,想要显示日期,该怎么办呢?下面我们就来看看详细的教程。1、在启动器打开终端,或者按[Ctrl+Alt+T]2、终端输入:sudoaptinstallgnome-tweak-tool3、安装完成之后,打开tweak工具4、点击TopBar5、Date就是日期,seconds就是秒数6、设置好之后,顶栏的时间上就显示了日期,以及秒

如何使用Python中的时间和日期模块如何使用Python中的时间和日期模块Oct 16, 2023 am 08:11 AM

如何使用Python中的时间和日期模块导言:在编程中,处理时间和日期是非常常见的任务。Python提供了强大的时间和日期模块,使得处理时间和日期的操作变得更加简单和方便。本文将介绍Python中的时间和日期模块,并提供具体的代码示例,帮助读者更好地理解和应用它们。一、引入时间和日期模块Python内置的时间和日期模块是datetime模块,我们需要先引入该模

超全!Python获取某一日期是“星期几”的六种方法!超全!Python获取某一日期是“星期几”的六种方法!Apr 19, 2023 am 09:28 AM

在Python进行数据分析时,按照日期进行分组汇总也是被需要的,比如会找到销量的周期性规律。那么在用Python进行数据统计之前,就需要额外增加一步:从指定的日期当中获取星期几。比如2022年2月22日,还正好是正月廿二星期二,于是乎这一天登记结婚的人特别多。本文就以2022-02-22为例,演示Python获取指定日期是“星期几”的6种方法!weekday()datetime模块是一个Python内置库,无需再进行pip安装,它除了可以显示日期和时间之外,还可以进行日期和时间的运算以及格式化。

PHP数据过滤:处理日期和时间输入PHP数据过滤:处理日期和时间输入Jul 28, 2023 pm 07:41 PM

PHP数据过滤:处理日期和时间输入概述:在开发网页应用程序时,经常需要处理用户输入的日期和时间数据。由于用户的输入可能存在各种格式和错误,因此必须进行有效的数据过滤和验证,以确保数据的准确性和安全性。本文将介绍如何使用PHP来处理日期和时间输入,并提供相应的代码示例。过滤和验证原则:在处理日期和时间输入之前,首先需要确定相应的过滤和验证原则。以下是一些常见的

如何使用Python生成两个日期之间的k个随机日期?如何使用Python生成两个日期之间的k个随机日期?Sep 09, 2023 pm 08:17 PM

生成随机数据在数据科学领域非常重要。从构建神经网络预测、股市数据等来看,通常都会将日期作为参数之一。我们可能需要在两个日期之间生成随机数以进行统计分析。本文将展示如何生成两个给定日期之间的k个随机日期使用随机和日期时间模块日期时间是Python内置的处理时间的库。另一方面,随机模块有助于生成随机数。因此,我们可以结合随机和日期时间模块来生成两个日期之间的随机日期。语法random.randint(start,end,k)这里的random指的是Python随机库。randint方法采用三个重要的

MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差Jul 13, 2023 am 08:00 AM

MySQL中如何使用DATEDIFF函数计算两个日期之间的天数差在MySQL数据库中,DATEDIFF函数可以方便地计算两个日期之间的天数差。这个函数接受两个日期作为参数,并返回它们之间的天数差。使用DATEDIFF函数的语法如下:DATEDIFF(date1,date2)其中,date1和date2是两个要比较的日期参数。这两个参数可以是日期类型的列名、

PHP日期处理技巧:快速确定某个日期的星期几PHP日期处理技巧:快速确定某个日期的星期几Mar 20, 2024 am 08:15 AM

PHP作为一种广泛应用于Web开发领域的编程语言,提供了丰富的日期处理函数,可以方便地对日期进行操作和计算。其中,快速确定某个日期是星期几是一个常见且实用的需求。本文将介绍如何利用PHP中的函数来快速确定某个日期的星期几,并提供具体的代码示例。PHP中日期处理函数简介PHP中关于日期处理的主要函数有date()、strtotime()、str

如何使用MySQL中的UNIX_TIMESTAMP函数将日期转换为时间戳如何使用MySQL中的UNIX_TIMESTAMP函数将日期转换为时间戳Jul 13, 2023 pm 12:00 PM

如何使用MySQL中的UNIX_TIMESTAMP函数将日期转换为时间戳时间戳是一个表示日期和时间的数字,它通常用于在计算机系统中存储和处理日期和时间。在MySQL中,可以使用UNIX_TIMESTAMP函数将日期转换为时间戳。本文将介绍如何使用UNIX_TIMESTAMP函数来实现这一转换。首先,我们需要了解UNIX_TIMESTAMP函数的用法。UNIX

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器