常见日期类问题汇总

作者:神秘网友 发布时间:2020-10-12 13:23:46

常见日期类问题汇总

常见日期类问题汇总
  1. 黑色星期五
    常见日期类问题汇总
    常见日期类问题汇总
    要点:基姆拉尔森公式。
import java.util.Scanner;

//黑色星期五
public class day04prc1 {
	public static void main(String []args){
		Scanner sc = new Scanner(System.in);
		int y = sc.nextInt();
		
		for(int m=1;m<13;m++){
			int W=0;
			if(m==1 || m==2){
				W = (13+2*(m+12)+3*(m+13)/5+y-1+(y-1)/4-(y-1)/100+(y-1)/400+1)%7;
			}
			else{
				W= (13+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
			}
			if(W==5)
				System.out.println(y+"-"+m+"-"+"13");			
        }
	}
}
  1. 高斯日记
    常见日期类问题汇总
    思路:首先介绍java的Calendar类:
    首先初始化:Calendar calendar = Calendar.getInstance();
    取的化也很方便,calendar.get(Calendar.YEAR) 表示取年,同理
    calendar.get(Calendar.MONTH) 表示取月份,注意月份是从0月开始算的.
    calendar.get(Calendar.DATE)表示几号
    calendar.set(1777,1,12+500)算当前日期后500天的日子
    其就能自动变成500天后的日期,不需要管闰年大小月之类.
    要点:1.提交答案的格式是yy-mm–dd!!所以最终结果写成1799-07-16!而不是1799-7-16.
    2.月份是从0开始算的!
import java.util.Calendar;
//高斯日记
public class day04prc2 {
	public static void main(String []args){
		Calendar calender = Calendar.getInstance(); //初始化
		//计算当前日期后5343天的日子
		calender.set(1777,3,30+5343);//注意月份是从0月开始算,因此3代表的就是4月
		System.out.println(calender.get(Calendar.YEAR));
		System.out.println(calender.get(Calendar.MONTH)+1);//取月份,注意月份是从0月开始算。
		System.out.print(calender.get(Calendar.DAY_OF_MONTH)-1);
	}
}
  1. 日期问题
    常见日期类问题汇总思路:转化为数字查看是否合格。用set集合存储去重。
    要点:要注意平年、闰年的2月份天数不同。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

//日期问题
public class day04prc3 {
	public static void main(String []args){
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		int a = Integer.parseInt(s.substring(0, 2));
		int b = Integer.parseInt(s.substring(3, 5));
		int c = Integer.parseInt(s.substring(6, 8));
		int []arr = new int[6];
		Set<String> jihe = new HashSet<String>();
		arr[0] = (2000+a)*10000+b*100+c;
		arr[1] = (2000+c)*10000+a*100+b;
		arr[2] = (2000+c)*10000+b*100+a;
		arr[3] = (1900+a)*10000+b*100+c;
		arr[4] = (1900+c)*10000+a*100+b;
		arr[5] = (1900+c)*10000+b*100+a;
		Arrays.sort(arr);
		
		//去掉非法的
		for(int i=0;i<6;i++){
			int year = arr[i]/10000;
			int month = arr[i]%10000/100;
			int day = arr[i]%10000%100;
			if(year>=1960 && year<=2059 && month>=1 && month<=12 && check(year,month,day))
				jihe.add(String.valueOf(arr[i]));
		}
		
		for(String each:jihe){
			System.out.println(each.substring(0, 4)+"-"+each.substring(4, 6)+"-"+each.substring(6,8));
		}
}
	
	//平年、闰年的2月份不同
	private static boolean check(int year, int month, int day) {
		// TODO 自动生成的方法存根
		int []runDay = {31,29,31,30,31,30,31,31,30,31,30,31};
		int []pingDay = {31,28,31,30,31,30,31,31,30,31,30,31};
		
		if((year%4==0 && year%100!=0 ) || year%400 == 0)
		{
			if(day<=runDay[month-1] && day>=1)
				return true;
		}
		else
		{
			if(day<=pingDay[month-1] && day>=1)
				return true;
		}
		return false;
	}
}

常见日期类问题汇总相关教程

  1. 背包问题(用到动态规划)

    背包问题(用到动态规划) 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 dp[i][j] = dp[i - 1][j] or dp[i - 1][j - nums[i]]0到i中一些数和为j0到i-1中一些数和为j0到i-1中一些数和为j - nums[i] (此时

  2. 解决Github连接缓慢图裂问题

    解决Github连接缓慢、图裂问题 1.通过修改本地hosts文件加速github 1.1 手动修改更新 首先我们需要找到自己设备上的hosts文件,不同的平台其存放路径各不相同,主要的平台hosts文件所在路径如下: Windows :C:\Windows\System32\drivers\etc\hosts Linux:/

  3. virtulbox安装win7的过程和碰到的一些问题

    virtulbox安装win7的过程和碰到的一些问题 软件开发工作基本结束,需要测试软件的运行环境,由于用户的计算机没有更新太快,使用win7系统的较多,我们需要在win7环境下,使用不同的浏览器测试软件运行情况。使用的方法就是利用virtualbox安装win7虚机测试。

  4. 解决同步验证码模拟登录问题

    解决同步验证码模拟登录问题 1、如何识别验证码 前言:识别验证码借助第三方库很好识别,主要是获得验证码识别后又相当一次request请求,这就会导致与当前页面的验证码不同,即使成功识别也会因为验证码的不统一而登录不了 通过selenium自动化测试工具自动定

  5. OSS对象存储的文件追加上传问题及解决方案

    OSS对象存储的文件追加上传问题及解决方案 最近项目中碰到这样一个问题,在我们软件的版本更新中的更新日志,需要每次更新的内容对同一个文件进行追加。然后我看了下阿里云的文档是这样写的,地址https://help.aliyun.com/document_detail/84784.html?spm=a2c

  6. 关于printf()输出浮点数保留小数问题

    关于printf()输出浮点数保留小数问题 printf()输出浮点数保留小数问题 #include stdio.hint main(void){ float a = 0.205, b = 0.215, c = 0.225, d = 0.235, e = 0.245; float f = 0.255, g = 0.265, h = 0.275, i = 0.285, j = 0.295; printf(\n); printf(%

  7. 解决IDEA中Vue项目出现红色波浪线问题

    解决IDEA中Vue项目出现红色波浪线问题 明天上班要用vue.js,今天周日,学一下明天用,遇到一个小问题记录一下,如下图: 话不多说,直接上菜,照着图设置就完了: 结果: 结语: 理论上应该是不影响使用,但有个红色波浪线,我想在座的各位应该是容忍不了的

  8. 解决VMware克隆Linux无法上网问题

    解决VMware克隆Linux无法上网问题 在实验过程中 linux 系统不够使用,怎么办?难道我们一五一十的重新安装 linux 系统?当然不是,我们可以使用虚拟机上面克隆功能,克隆出另外一个 linux 系统,减少了重头安装 lnux 消耗的时间。克隆过去的 linux 系统就可