/**
* 输入一个生产日期格式"yyyy-MM-dd",再输入一个数字(保质期的天数)。
* 然后经过计算输出促销日期,促销日期为:该商品过期日前2周的周三
* @author Xiloer
*
* 输入一个生产日期格式"yyyy-MM-dd",再输入一个数字(保质期的天数)。
* 然后经过计算输出促销日期,促销日期为:该商品过期日前2周的周三
* @author Xiloer
*
*/
代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.Calendar;
public class Test04 {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
System.out.println("输入一个生产日期格式:(yyyy-MM-dd)");
String str = scan.nextLine().trim();//接收日期
System.out.println("输入一个数字:(保质期的天数)");
int num = scan.nextInt();//接收保质期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
Calendar c =Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_YEAR, num);
c.add(Calendar.WEEK_OF_YEAR, -2);
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
date = c.getTime();
String input = sdf.format(date);
System.out.println("促销日期为"+input);
}
}
输出结果如下:
输入一个生产日期格式:(yyyy-MM-dd)
2016-12-13
输入一个数字:(保质期的天数)
30
促销日期为2016-12-28
**
* 实现时间的计算: 要求用户输入身份证号,若格式有误,要求其重新输入。然后根据身份证号码输出28岁生日
* 所在周的周三的日期。
* 例如:
* 出生日期:1992-07-15。
* 20岁生日:2012-07-15
* 当周的周三为:2012-07-18
* @author Xiloe
*
*/
代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) throws ParseException {
String input = isStandard();//接收到正确的身份证号码
System.out.println(input);
input = input.substring(6, 14);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date date = sdf.parse(input);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.YEAR, 28);
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("20岁生日所在周的周三的日期:"+sdf1.format(c.getTime()));
}
public static String isStandard(){
Scanner scan = new Scanner(System.in);
for(;;){
System.out.println("请输入身份证号码:(18位数字)");
String input = scan.nextLine().trim();
String regex = "\\d{15}(\\d{2}[\\dxX])?";//身份证号码的最后三位可能没有,最后一位可能是x或X
boolean check = input.matches(regex);
if(check){
scan.close();
return input;
}else{
System.out.println("输入格式有误!");
}
}
}
}
输出结果如下:
请输入身份证号码:(18位数字)
510122198809086217
510122198809086217
20岁生日所在周的周三的日期:2016-09-07