java根据开始时间和结束时间,计算中间天数,并打印

Wesley13
• 阅读 721

java根据开始时间和结束时间,计算中间天数,并打印

import java.text.SimpleDateFormat;
import java.util.Date;


public class Calcdate {
    static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    static SimpleDateFormat ymd = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args)throws Exception{
        Date beginTime = sdf.parse("2015-04-23 12:32:44");
//        Date endTime = sdf.parse("2015-04-23 14:56:44");
        Date endTime = sdf.parse("2015-04-29 14:56:44");

        long diff = (endTime.getTime() - beginTime.getTime()) / (86400 * 1000);
        System.out.println("diff = " + diff);

        Date sb = null;
        Date se = null;
        if(diff == 0){
            sb = beginTime;
            se = endTime;

            String ss = String.format("%d> Sb=%s, Se=%s", 1, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se));
            System.out.println(ss);
        }else {
            int i = 0;
            while (i <= diff) {
                if (i == 0) {
                    sb = beginTime;
                    se = sdf.parse(ymd.format(sb) + " 23:59:59");
                } else if (i == diff) {
                    sb = sdf.parse(ymd.format(endTime) + " 00:00:00");
                    se = endTime;
                } else {
                    se = new Date(beginTime.getTime() + i * 24 * 60 * 60 * 1000);
                    sb = sdf.parse(ymd.format(se) + " 00:00:00");
                    se = sdf.parse(ymd.format(se) + " 23:59:59");
                }

                String ss = String.format("%d> Sb=%s, Se=%s", i, Coder.DateTimeToStr(sb), Coder.DateTimeToStr(se));
                System.out.println(ss);

                i++;
            }
        }
    }
}

diff = 6
0> Sb=2015-04-23 12:32:44, Se=2015-04-23 23:59:59
1> Sb=2015-04-24 00:00:00, Se=2015-04-24 23:59:59
2> Sb=2015-04-25 00:00:00, Se=2015-04-25 23:59:59
3> Sb=2015-04-26 00:00:00, Se=2015-04-26 23:59:59
4> Sb=2015-04-27 00:00:00, Se=2015-04-27 23:59:59
5> Sb=2015-04-28 00:00:00, Se=2015-04-28 23:59:59
6> Sb=2015-04-29 00:00:00, Se=2015-04-29 14:56:44
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java里Date 10位时间戳(Timestamp) String 相互转换
有很多注释,就不做过多解释了import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Dat
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java几秒前,几分钟前,几小时前,几天前,几月前,几年前的实现
package com.date;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class RelativeDateFormat {
Wesley13 Wesley13
3年前
java设置时间偏移天数,
1,packagecom.banksteel.openerp.common.vo;importjava.io.Serializable;publicclassTimeIntervalVOimplementsSerializable{/
PHP获取某年某月开始和结束的时间戳
/月份开始结束时间戳$y年$m月/functionmFristAndLast($y"",$m"")if($y"")$ydate("Y");if($m"")$mdate("m");$msprintf("%02d",intval($m));$ystrpad(intva
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
Java8为什么提供LocalDate、LocalTime、LocalDateTime 时间类
Java8为什么提供LocalDate、LocalTime、LocalDateTime时间类?Date不格式化打印可读性差。TueSep1009:34:04CST2019使用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全
Wesley13 Wesley13
3年前
Java日期时间API系列35
  通过Java日期时间API系列1Jdk7及以前的日期时间类(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fxkzhangsanx%2Fp%2F12032719.html)中得知,Java8以前除了java.sql.Timestamp扩充
Wesley13 Wesley13
3年前
Java日期时间API系列23
  有时候,往往需要统计某个时间区间的销量等问题,这就需要准确的起始时间,获取准确开始时间00:00:00,获取准确结束时间23:59:59。下面增加了一一些方法,获取当天起始时间,昨天起始时间,当前月第一天开始时间,当前月最后一天结束时间,上个月第一天开始时间,上个月最后一天结束时间,某个指定月的起始结束时间等等。其中月份最后一天往往因为月份不同和