2019独角兽企业重金招聘Python工程师标准>>>

日志格式化类 Date.class.php

<?php
class Datefmt{function __construct() {}/*** 根据指定日期获取所在周的起始时间和结束时间*/public function get_weekinfo_by_date($date) {$idx = strftime("%u", strtotime($date));$mon_idx = $idx - 1;$sun_idx = $idx - 7;return array('week_start_day' => strftime('%Y-%m-%d', strtotime($date) - $mon_idx * 86400),'week_end_day' => strftime('%Y-%m-%d', strtotime($date) - $sun_idx * 86400),);}/*** 根据指定日期获取所在月的起始时间和结束时间*/public function get_monthinfo_by_date($date){$ret = array();$timestamp = strtotime($date);$mdays = date('t', $timestamp);return array('month_start_day' => date('Y-m-1', $timestamp),'month_end_day' => date('Y-m-'.$mdays, $timestamp));}/*** 获取指定日期之间的各个周*/public function get_weeks($sdate, $edate) {$range_arr = array();// 检查日期有效性$this->check_date(array($sdate, $edate));// 计算各个周的起始时间do {$weekinfo = $this->get_weekinfo_by_date($sdate);$end_day = $weekinfo['week_end_day'];$start = $this->substr_date($weekinfo['week_start_day']);$end = $this->substr_date($weekinfo['week_end_day']);$range = "{$start} ~ {$end}";$range_arr[] = $range;$sdate = date('Y-m-d', strtotime($sdate)+7*86400);}while($end_day < $edate);return $range_arr;}/*** 获取指定日期之间的各个月*/public function get_months($sdate, $edate) {$range_arr = array();do {$monthinfo = $this->get_monthinfo_by_date($sdate);$end_day = $monthinfo['month_end_day'];$start = $this->substr_date($monthinfo['month_start_day']);$end = $this->substr_date($monthinfo['month_end_day']);$range = "{$start} ~ {$end}";$range_arr[] = $range;$sdate = date('Y-m-d', strtotime($sdate.'+1 month'));}while($end_day < $edate);return $range_arr;}/*** 截取日期中的月份和日* @param string $date* @return string $date*/public function substr_date($date) {if ( ! $date) return FALSE;return date('m-d', strtotime($date));}/*** 检查日期的有效性 YYYY-mm-dd* @param array $date_arr* @return boolean*/public function check_date($date_arr) {$invalid_date_arr = array();foreach ($date_arr as $row) {$timestamp = strtotime($row);$standard = date('Y-m-d', $timestamp);if ($standard != $row) $invalid_date_arr[] = $row;}if ( ! empty($invalid_date_arr)) {die("invalid date -> ".print_r($invalid_date_arr, TRUE));}}
}

类文件的使用

<?phprequire_once "Datefmt.class.php";$datefmt = new Datefmt();// 输出11月1日和30日之间的各周var_dump($datefmt->get_weeks('2014-11-05', '2014-11-29'));/*结果为array(4) {[0]=>string(13) "11-03 ~ 11-09"[1]=>string(13) "11-10 ~ 11-16"[2]=>string(13) "11-17 ~ 11-23"[3]=>string(13) "11-24 ~ 11-30"}*/// 输出2月1日和11月30日var_dump($datefmt->get_months('2014-02-03', '2014-11-29'));/*结果为array(10) {[0]=>string(13) "02-01 ~ 02-28"[1]=>string(13) "03-01 ~ 03-31"[2]=>string(13) "04-01 ~ 04-30"[3]=>string(13) "05-01 ~ 05-31"[4]=>string(13) "06-01 ~ 06-30"[5]=>string(13) "07-01 ~ 07-31"[6]=>string(13) "08-01 ~ 08-31"[7]=>string(13) "09-01 ~ 09-30"[8]=>string(13) "10-01 ~ 10-31"[9]=>string(13) "11-01 ~ 11-30"}*/

转载于:https://my.oschina.net/u/2269208/blog/348156

获取指定日期之间的各个周和月相关推荐

  1. java获取指定日期的所在周的第一天(周一)

    java获取指定日期的所在周的第一天(周一) private static void getWeekByDate(Date time) {SimpleDateFormat sdf = new Simp ...

  2. JAVA实现获取指定日期所在的周的所有日期

    需求:获取指定日期所在的周的所有日期 思路:获取指定日期所在的周的第一天,即周一的日期,设置日历的日期为那一天,依次取七天的日期 实现: package com.day0405;import java ...

  3. vue项目——获取指定日期是周几和第几周的信息——表格展示

    最近在写后台管理系统,遇到以下的要求,就是要展示 年月日和周几和第几周的情况. 下面记录一下用到的函数: 1.跟据日期获取第几周 //根据日期获取第几周 getWeek(dateTime) {var ...

  4. 获取指定日期所在周的每一天的日期(周一,周二,周三,周四,周五到周末 )

    最近项目用到,特此记录. public class Test {public static void main(String[] args) {System.out.println(getNeedDa ...

  5. 使用Calendar类获取指定日期所在年/月份、周第一天、最后一天

    最近做项目有涉及需要获取指定日期或当前日期所在月份和周第一和最后一天,结合网上的资料和自己项目开发记录,记录下用到的这些方法. 目录 1.获取指定年份的第一天和最后一天 2. 获取指定日期月份第一天和 ...

  6. php 获取两个日期相隔几周,怎么样计算2个日期之间相差几周

    你的位置: 问答吧 -> PHP基础 -> 问题详情 怎么样计算2个日期之间相差几周 如题 如果2个日期在同一年中的话可以通过date("W",unix时间戳)来计算 ...

  7. JS获取指定日期前后N天的日期、前N个月日期、后N个月日期

    今天做项目遇到了,获取相对于当前日期前30天的时间,结合网上资料,做了一份整理. 一.获取指定日期前或者后指定间隔时间代码 function getNowFormatDate(sdate,interv ...

  8. 获取指定日期的常用前后节点(月初月末周一周末等等)

    获取指定日期的常用前后节点(月初月末周一周末等等) 原文:获取指定日期的常用前后节点(月初月末周一周末等等) 注:周节点方面是根据中国习惯,视周一为起,周日为末. /*---------------- ...

  9. 计算当前时间到指定日期之间距离多久(494天11866小时711960分钟42717625秒)

    import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter ...

最新文章

  1. MPLS、SD-WAN孰优孰劣?
  2. hdu java_HDU Java8 集锦
  3. ai背景合成_智能合成AI主播很危险,应立即取消!
  4. 拒绝yyds洗脑,我是Pro!
  5. Android学习之动态调用碎片
  6. linux上部署最新版本zookeeper伪分布式集群
  7. 201403-1-相反数
  8. Document Star证件照大师升级版 for Mac(支持ps2021)
  9. 华人小伙在美开网店卖鞋 一年销售额超八亿
  10. 南京邮电大学计算机科学楼,南京邮电大学bbs
  11. JavaEE面试注意事项
  12. 计算机学院运动会通讯稿,大学运动会通讯稿300字汇总七篇
  13. Win10睡眠后自动唤醒启动的问题
  14. SAP-MM科目自动分配解析-(4-1)- 物料的配置影响
  15. 1.6 FPGA电路设计
  16. 【水滴云|热点】个人信息安全有法可依,海量数据用IPFS存储
  17. php disconf,未主/disconf
  18. 戴尔Inspiron14加【固态硬盘】更换【内存条】装【win10+ubuntu16.04】双系统
  19. mars3d学习-方量分析
  20. Unity中使用ProtoBuf-保姆式教程

热门文章

  1. js 多个定时器_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理(二)
  2. 仿qq左滑删除listview_Java基于Swing和Netty仿QQ界面聊天小项目
  3. python getostime_python中sys,os,time模块的使用(包括时间格式的各种转换)
  4. 查看linux虚拟机信息,虚拟机:Linux查看线程信息的步骤
  5. 动态刷新_屋盖“起飞”刷新国内记录,中建八局杭州萧山国际机场项目最新动态来袭...
  6. boost安装_【环境搭建】源码安装Boost
  7. mediawiki java api_维基百科 MediaWiki API 解析
  8. 程序员取悦女票的正确姿势---Tip1(iOS美容篇)
  9. android中方法调用super(..)的相关知识
  10. Linux下Shell日期的格式