嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

周梦康 发表于 2015-10-27 3949 次浏览 标签 : Java

免费领取阿里云优惠券 我的直播 - 《PHP 进阶之路》

比如做当前积分排行榜,需要获取今天凌晨的时间戳。

万能的 PHP 当然是一句话搞定啦

strtotime(date("Y-m-d 00:00:00", time()));

如果用 Java 呢?自己折腾了半天

public static int getMorningTs(){
    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
    try {
        Date date = format.parse(format.format(new Date()));
        return (int) (date.getTime() /1000);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

看了下别人的,更好理解

public static int getMorningTs(){
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.MILLISECOND, 0);
    return (int) (cal.getTimeInMillis()/1000);
}

后台脚本用 php 在脚本统计本周榜单,而前台 api 用 java 输出,出了一点小问题,获取今天星期几上没统一,这里纠正下。还是 API 不熟。

Calendar cal = Calendar.getInstance();
int weekday = cal.get(Calendar.DAY_OF_WEEK); // 1~7 1 表示周日 7 表示周六
if (weekday == 1){
    weekday = 8;
}
weekday = weekday - 1;
int weekStartTs = TsUtil.getMorningTs() - (weekday - 1)*86400
date("N", time());// 1~7 1 表示周一 7 表示周日
$weekStartTs = strtotime(date("Y-m-d 00:00:00", time())) - ($weekday - 1)*86400;


嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表