常见日期类问题汇总
常见日期类问题汇总
常见日期类问题汇总- 黑色星期五
要点:基姆拉尔森公式。
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"); } } }
- 高斯日记
思路:首先介绍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); } }
- 日期问题
思路:转化为数字查看是否合格。用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; } }
常见日期类问题汇总相关教程
-
背包问题(用到动态规划)
背包问题(用到动态规划) 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 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] (此时
-
解决Github连接缓慢图裂问题
解决Github连接缓慢、图裂问题 1.通过修改本地hosts文件加速github 1.1 手动修改更新 首先我们需要找到自己设备上的hosts文件,不同的平台其存放路径各不相同,主要的平台hosts文件所在路径如下: Windows :C:\Windows\System32\drivers\etc\hosts Linux:/
-
virtulbox安装win7的过程和碰到的一些问题
virtulbox安装win7的过程和碰到的一些问题 软件开发工作基本结束,需要测试软件的运行环境,由于用户的计算机没有更新太快,使用win7系统的较多,我们需要在win7环境下,使用不同的浏览器测试软件运行情况。使用的方法就是利用virtualbox安装win7虚机测试。
-
解决同步验证码模拟登录问题
解决同步验证码模拟登录问题 1、如何识别验证码 前言:识别验证码借助第三方库很好识别,主要是获得验证码识别后又相当一次request请求,这就会导致与当前页面的验证码不同,即使成功识别也会因为验证码的不统一而登录不了 通过selenium自动化测试工具自动定
-
OSS对象存储的文件追加上传问题及解决方案
OSS对象存储的文件追加上传问题及解决方案 最近项目中碰到这样一个问题,在我们软件的版本更新中的更新日志,需要每次更新的内容对同一个文件进行追加。然后我看了下阿里云的文档是这样写的,地址https://help.aliyun.com/document_detail/84784.html?spm=a2c
-
关于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(%
-
解决IDEA中Vue项目出现红色波浪线问题
解决IDEA中Vue项目出现红色波浪线问题 明天上班要用vue.js,今天周日,学一下明天用,遇到一个小问题记录一下,如下图: 话不多说,直接上菜,照着图设置就完了: 结果: 结语: 理论上应该是不影响使用,但有个红色波浪线,我想在座的各位应该是容忍不了的
-
解决VMware克隆Linux无法上网问题
解决VMware克隆Linux无法上网问题 在实验过程中 linux 系统不够使用,怎么办?难道我们一五一十的重新安装 linux 系统?当然不是,我们可以使用虚拟机上面克隆功能,克隆出另外一个 linux 系统,减少了重头安装 lnux 消耗的时间。克隆过去的 linux 系统就可