如何php 获取本周时间戳,本月,本日的开始时间和结束时间的时间戳

1841人阅读
Android技术(42)
Java技术(3)
和获取今日开始和结束的时间戳一样,本周开始和结束的时间戳,就是以本周第一天开始的00:00到本周最后一天的23:59分结束。
需要注意的是,国际上是以星期日为一周第一天的开始,Calendar中提供的DAY_OF_WEEK获取的一周也是以星期日作为一周的开始。
而中国的习惯是以星期一作为一周的开始,所以需要根据项目的实际需求来设置。
1、以星期日作为一周的开始
* 本周开始时间戳
public static String getWeekStartTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale.getDefault());
Calendar cal = Calendar.getInstance();
// 获取星期日开始时间戳
cal.set(Calendar. DAY_OF_WEEK, Calendar.SUNDAY);
return simpleDateFormat.format(cal.getTime()) + &&;
* 本周结束时间戳
public static String getWeekEndTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale.getDefault());
Calendar cal = Calendar.getInstance();
// 获取星期六结束时间戳
cal.set(Calendar. DAY_OF_WEEK, Calendar.SATURDAY );
return simpleDateFormat.format(cal.getTime()) + &&;
2、以星期一作为一周的开始
在设置星期一为一周第一天的时候遇到个坑
查阅api的时候看到了这个函数setFirstDayOfWeek()
然后代码是这样写的:
* 本周开始时间戳
public static String getWeekStartTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale.getDefault());
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获取星期一开始时间戳
cal.set(Calendar. DAY_OF_WEEK, Calendar.MONDAY);
return simpleDateFormat.format(cal.getTime()) + &&;
* 本周结束时间戳
public static String getWeekEndTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale.getDefault());
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获取星期日结束时间戳
cal.set(Calendar. DAY_OF_WEEK, Calendar.SUNDAY);
return simpleDateFormat.format(cal.getTime()) + &&;
这两个方法在本周的星期一到星期六的时候,获取到的数据是正常的,确实返回的是本周星期一到星期日的时间戳。
但是到了本周星期日的时候出现问题了,两方法在星期日的时候,获取到的是下个星期一和下个星期日的日期!
最后找了半天的资料,原来是对setFirstDayOfWeek的理解出了问题
Calendar中的星期一、二、三、四、五、六、日、DAY_OF_WEEK等都是以一个常量的形式存在的,我们设置setFirstDayOfWeek()并不能改变这些常量的值
正确的代码应该这样写:
* 本周开始时间戳 - 以星期一为本周的第一天
public static String getWeekStartTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale. getDefault());
Calendar cal = Calendar.getInstance();
int day_of_week = cal.get(Calendar. DAY_OF_WEEK) - 1;
if (day_of_week == 0 ) {
day_of_week = 7 ;
cal.add(Calendar.DATE , -day_of_week + 1 );
return simpleDateFormat.format(cal.getTime()) + &&;
* 本周结束时间戳 - 以星期一为本周的第一天
public static String getWeekEndTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( &yyyyMMdd&, Locale. getDefault());
Calendar cal = Calendar.getInstance();
int day_of_week = cal.get(Calendar. DAY_OF_WEEK) - 1;
if (day_of_week == 0 ) {
day_of_week = 7 ;
cal.add(Calendar.DATE , -day_of_week + 7 );
return simpleDateFormat.format(cal.getTime()) + &&;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:104333次
积分:1593
积分:1593
排名:第18505名
原创:47篇
评论:11条
阅读:7758 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
如何获取本周,本月,本日的开始时间和结束时间的时间戳
下载积分:938
内容提示:如何获取本周,本月,本日的开始时间和结束时间的时间戳
文档格式:DOC|
浏览次数:51|
上传日期: 05:22:40|
文档星级:
该用户还上传了这些文档
如何获取本周,本月,本日的开始时间和结束时间的时间戳
官方公共微信 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
如何获取本周,本月,本日的开始时间和结束时间的时间戳
下载积分:811
内容提示:如何获取本周,本月,本日的开始时间和结束时间的时间戳
文档格式:DOC|
浏览次数:86|
上传日期: 05:20:19|
文档星级:
该用户还上传了这些文档
如何获取本周,本月,本日的开始时间和结束时间的时间戳
官方公共微信php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
字体:[ ] 类型:转载 时间:
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法,主要使用到了 php 的时间函数 mktime。下面首先还是直奔主题以示例说明如何使用 mktime 获取今日、昨日、上周、本月的起始时间戳和结束时间戳,然后在介绍一下 mktime 函数作用和用法
代码如下://php获取今日开始时间戳和结束时间戳$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y'));$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
//php获取昨日起始时间戳和结束时间戳
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y'));$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1;//php获取上周起始时间戳和结束时间戳$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));//php获取本月起始时间戳和结束时间戳$beginThismonth=mktime(0,0,0,date('m'),1,date('Y'));$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y'));
PHP mktime() 函数用于返回一个日期的 Unix 时间戳。语法mktime(hour,minute,second,month,day,year,is_dst)参数 描述hour 可选。规定小时。minute 可选。规定分钟。second 可选。规定秒。month 可选。规定用数字表示的月。day 可选。规定天。year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。is_dst 可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。用法参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。注意在 PHP 5.1 之前,如果该函数的参数非法,则会返回 false。另外需要注意的是该函数对于日期运算和验证非常有用。它可以自动校正越界的输入,如: 代码如下:echo(date("M-d-Y",mktime(0,0,0,12,36,2013)));将输出结果如:Jan-05-2014
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具今天、昨天、本周、上周、本月、上月时间段开始时间和结束时间_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:502,605贴子:
今天、昨天、本周、上周、本月、上月时间段开始时间和结束时间收藏
package com.b5m.import java.text.SimpleDateFimport java.util.Cimport java.util.Dimport java.util.HashMimport java.util.Mimport com.b5m.vo.BetwTimeVo;public class DataUtil {public static long begin = 0l;public static long end = 0l;public static long now = new Date().getTime();/*** 今天* *
calendar* @return*/public static BetwTimeVo calcToday() {Calendar calendar = Calendar.getInstance();BetwTimeVo betwTimeVo = new BetwTimeVo();calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);begin = calendar.getTime().getTime();calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);end = calendar.getTime().getTime();betwTimeVo.setBegin(begin);betwTimeVo.setEnd(end);return betwTimeVo;}/*** 昨天* * @param calendar* @return*/public static BetwTimeVo calcYesterday() {Calendar calendar = Calendar.getInstance();BetwTimeVo betwTimeVo = new BetwTimeVo();calendar.add(Calendar.DATE, -1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);begin = calendar.getTime().getTime();calendar.add(Calendar.DATE, -1);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);end = calendar.getTime().getTime();betwTimeVo.setBegin(begin);betwTimeVo.setEnd(end);return betwTimeVo;}/*** 本周* * @return*/public static BetwTimeVo getWeekDay() {BetwTimeVo betwTimeVo = new BetwTimeVo();Calendar cal = Calendar.getInstance();SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 获取本周一的日期cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar.MILLISECOND, 0);betwTimeVo.setBegin(cal.getTime().getTime());System.out.print(&********得到本周一的日期*******& + df.format(cal.getTime()));// 这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 增加一个星期,才是我们中国人理解的本周日的日期cal.add(Calendar.WEEK_OF_YEAR, 1);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);cal.set(Calendar.MILLISECOND, 999);betwTimeVo.setEnd(cal.getTime().getTime());System.out.print(&********得到本周天的日期*******& + df.format(cal.getTime()));return betwTimeVo;}/*** 上周* * @return*/public static BetwTimeVo getLastWeekDay() {BetwTimeVo betwTimeVo = new BetwTimeVo();Calendar cal = Calendar.getInstance();SimpleDateFormat df = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);cal.set(Calendar.DAY_OF_WEEK, 1);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);cal.set(Calendar.MILLISECOND, 999);betwTimeVo.setEnd(cal.getTime().getTime());System.out.println(&********得到上周日的日期*******&+df.format(cal.getTime()));cal.add(Calendar.WEEK_OF_MONTH, -1);cal.set(Calendar.DAY_OF_WEEK, 2);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);cal.set(Calendar.MILLISECOND, 0);betwTimeVo.setBegin(cal.getTime().getTime());System.out.println(&********得到上周一的日期*******&+df.format(cal.getTime()));return betwTimeVo;}/*** 本月* * @return*/public static BetwTimeVo getMonthDate() {BetwTimeVo betwTimeVo = new BetwTimeVo();// 获取CalendarCalendar calendar = Calendar.getInstance();SimpleDateFormat format = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);// 设置时间,当前时间不用设置// calendar.setTime(new Date());calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);betwTimeVo.setBegin(calendar.getTime().getTime());System.out.print(&*********得到本月的最小日期**********&+ format.format(calendar.getTime()));// 设置日期为本月最大日期calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);// 打印betwTimeVo.setEnd(calendar.getTime().getTime());System.out.print(&*********得到本月的最大日期**********&+ format.format(calendar.getTime()));return betwTimeVo;}/*** 上月* * @return*/public static BetwTimeVo getLastMonthDate() {BetwTimeVo betwTimeVo = new BetwTimeVo();Map&String, String& map = new HashMap&String, String&();// 获取CalendarCalendar calendar = Calendar.getInstance();SimpleDateFormat format = new SimpleDateFormat(&yyyy-MM-dd HH:mm:ss&);// 设置时间,当前时间不用设置// calendar.setTime(new Date());calendar.add(Calendar.MONTH, -1);calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);betwTimeVo.setBegin(calendar.getTime().getTime());map.put(&monthF&, format.format(calendar.getTime()));System.out.print(&*********得到上月的最小日期**********&+ format.format(calendar.getTime()));// 设置日期为本月最大日期Calendar cale = Calendar.getInstance();cale.set(Calendar.DAY_OF_MONTH, 0);cale.set(Calendar.HOUR_OF_DAY, 23);cale.set(Calendar.MINUTE, 59);cale.set(Calendar.SECOND, 59);cale.set(Calendar.MILLISECOND, 999);betwTimeVo.setEnd(cale.getTime().getTime());;// 打印map.put(&monthL&, format.format(cale.getTime()));System.out.print(&*********得到上月的最大日期**********&+ cale.getTime().getTime());return betwTimeVo;}public static void main(String[] args) { System.out.println(getLastWeekDay());}}
上海java培训,选达内,美国上市教育机构,「java培训之父」Sun认证,先就业后付款!达内java培训,名师授课,0基础120天速成java工程师,0元试学!学习+认证+就业=薪前景!
LZ也是蛮拼的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 php 本月第一天时间戳 的文章

 

随机推荐