您的位置:首页 > 编程语言

获取当前时间的后一天开始时间的时间戳以及一个关于日历类的一个编程问题

2020-07-21 04:13 1121 查看

1.获取当前时间的后一天 的开始时间

这里需要用到的是常用类库中DateFormat知识点以及Calendar知识点。

首先需要获取当前时间的时间戳,代码如下:

[code]long time1 = System.currentTimeMillis();

通过DateFormat格式化:

[code]SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

将时间戳转换为格式化时间并且转换为字符串:

[code]String d1 = df.format(new Date(time1));

接下来需要用到Calendar设置时间,需要将当前时间的天数加一,将当前时间的小时,分钟,秒,毫秒设置为0,那么第二天开始的时间就已经设置好了

[code]Calendar now = Calendar.getInstance();
now.add(Calendar.DATE,+1);
now.set(Calendar.HOUR_OF_DAY,0);
now.set(Calendar.MINUTE,0);
now.set(Calendar.SECOND,0);
now.set(Calendar.MILLISECOND,0);
String nextday = df.format(now.getTime());//将设置好的当前时间格式化
long time2 = now.getTimeInMillis();//当前时间转换为时间戳

看一下输出的结果

2.

某林业工人孙工,作息规律为上三天班,休息一天,经常不确定休息日是否是周末。为此,请你开发一个程序,当孙工 输入年以及月,以日历方式显示对应月份的休息日,用中括号进行标记(可以查看以前的休息情况和将来的休息情 况)。同时,统计出本月有几天休息,轮到周末休息有几天 直接上源代码,有一定的注释:
[code]import java.util.Calendar;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
import java.text.ParseException;

public class lianxi2 {

public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入年:");
int year = sc.nextInt();
System.out.println("请输入月: ");
int month = sc.nextInt();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
Date startData = df.parse("2020-02-01");//设置起始时间

cal.set(Calendar.YEAR, year);//将年,月设置为用户输入的时间
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DAY_OF_MONTH, 1);//设置当前月数的第一天
int weekStart = cal.get(Calendar.DAY_OF_WEEK);//获得每周开始的时间
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i=1;i<weekStart;i++){
System.out.printf("%-8s","");//在变量右边缩进8个字符
}
int countRelax = 0;
int countWeekend = 0;
int maxDate = cal.getActualMaximum(Calendar.DATE);//让maxDate获取本月的最大天数
for (int i=1;i<= maxDate;i++){
cal.set(Calendar.DAY_OF_MONTH, i);//设置每月当天的天数,
Date temp = cal.getTime();//获取用户输入的年,月
int gap = getDifferentDay(startData, temp);//获得本月的总天数。
if (gap%4==1){//上三天休息一天,每循环一次休息天数+1
System.out.printf("%-8s","["+cal.get(Calendar.DAY_OF_MONTH)+"]");
countRelax++;
if (cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
countWeekend++;//判定休息天数是否在周末内,如果是周末天数+1
}
}else {
System.out.printf("%-8s", cal.get(Calendar.DAY_OF_MONTH));
}

if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.println();
}
cal.add(Calendar.DAY_OF_MONTH,1);
}
System.out.println("本月休息的天数有:"+countRelax);
System.out.println("本月轮到周末休息的天数有:"+countWeekend);
}
private static int getDifferentDay(Date from, Date to){//该方法用于获得本月的总天数
long fromTime = from.getTime();
long toTime = to.getTime();
int days = (int) ((toTime - fromTime) / (1000 * 60 * 60 * 24));
return days;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐