
正文
java简单日期类代码 java编写日期类date
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java编写一个简单的输入生日计算下一个生日时间的代码?
import java.util.Calendar;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
/**
* Title: Test03.javabr
* Description:
*
* @author 王凯芳
* @date 2020年3月5日 下午6:03:04
* @version 1.0
*
* @request 编写一个方法能计算任何一个人今天离他最近下一次生日还有多少天,然后在主方法(main方法)中输入你的出生年月日,调用该方法的计算结果并输出信息“某某同学离自己最近下一次生日x天”。
*/
public class Test03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的生日,格式为(2000/01/01):");
String line = sc.nextLine();
String[] strs = line.split("/");
if (strs.length == 3) {
int days = getDays(strs[0], strs[1], strs[2]);
if (days == 0) {
System.out.println(String.format("%s 同学,今天是你的生日,祝你生日快乐(#^.^#)", name, days));
} else {
System.out.println(String.format("%s 同学离自己最近下一次生日%d天。", name, days));
}
} else {
System.out.println("生日输入不正确!请按格式输入。");
}
sc.close();
}
/**
* 获取最近一次生日天数
*
* @param year
* @param month
* @param day
* @return
*/
public static int getDays(String year, String month, String day) {
Calendar now = Calendar.getInstance();
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);
int now_year = now.get(Calendar.YEAR);
Calendar birthday = Calendar.getInstance();
birthday.set(Calendar.YEAR, now_year);
birthday.set(Calendar.MONTH, Integer.parseInt(month) - 1);
birthday.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));
birthday.set(Calendar.HOUR_OF_DAY, 0);
birthday.set(Calendar.MINUTE, 0);
birthday.set(Calendar.SECOND, 0);
birthday.set(Calendar.MILLISECOND, 0);
long diff = now.getTimeInMillis() - birthday.getTimeInMillis();
if (diff == 0) {
return 0;
} else if (diff 0) {
long diffDays = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
return Math.abs((int) diffDays);
} else {
birthday.add(Calendar.YEAR, 1);
long diffMi = birthday.getTimeInMillis() - now.getTimeInMillis();
long diffDays = TimeUnit.DAYS.convert(diffMi, TimeUnit.MILLISECONDS);
return (int) diffDays;
}
}
}
相关问答
Q1: 请问如何编写以下一个计算日期的Java代码。
package com.cn.gjy;
import java.util.Scanner;
/*
说明java简单日期类代码:1这个应该没有问题,package是java简单日期类代码我编辑用的包名,java简单日期类代码你去掉;
2,纯自己手打的
3刚刚看到你这个不是从外面输入,那更简单,你加一个set方法就OKjava简单日期类代码了
public void setDay(int d){}然后调用一下就OK了
* 要用下列六种METHOD
* validateInput (判定用户输入是否正确)
* getMonth (拿月份名称)
* isLeapYear (判定是否闰年)
* daysInMonth (确定一个月有多少天)
* computeTotalDays (计算从1月1日开始过去了多少天)
* nextDay (明天是几号.)*/
public class JustJustJust {
private static int day;
private static int month;
private static int year;
static Scanner sc = new Scanner(System.in);
//输入错误则推出程序
public static void validateInput(){
System.out.println("请输入年份");
//String dateYear = sc.next();
int dateYear = Integer.parseInt(sc.next());
if(dateYear2013dateYear1899) {
year = dateYear;
}else{
System.out.println("输入错误java简单日期类代码:超出范围");
System.out.println("程序终止");
System.exit(0);
}
System.out.println("请输入月份");
//String dateMon = sc.next();
int dateMon = Integer.parseInt(sc.next());
if(dateMon13dateMon0) {
month = dateMon;
}else{
System.out.println("输入错误:超出范围");
System.out.println("程序终止");
System.exit(0);
}
System.out.println("请输入日期");
//String dateDay = sc.next();
int dateDay = Integer.parseInt(sc.next());
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)(dateDay0dateDay33)){
day = dateDay;
}
else if((month==2)(year%4==0)){
if(year%100 !=0){
if(dateDay0dateDay30){
day = dateDay;
}else{
System.out.println("输入错误:超出范围");
System.out.println("程序终止");
System.exit(0);
}
}
}
else if((month==2)(year%400==0)(dateDay0dateDay30))
{day=dateDay;}
else if((month==4||month==6||month==8||month==11)(dateDay0dateDay31))
{day=dateDay;}
else{
System.out.println("输入错误:超出范围");
System.out.println("程序终止");
System.exit(0);
}
}
//获取
//天
public static int getDay(){
return day;
}
//月
public int getMonth() {
return month;
}
//年
public int getYear() {
return year;
}
//判断闰年
public static void isLeapYear(){
if((year%100 !=0)(year%4==0)){
System.out.println("今年是:" + year + "年" );
System.out.println("是闰年");
}else{
System.out.println("今年是:" + year + "年");
System.out.println("不是润年");
}
}
public static void daysInMonth(){
if((year%100 !=0)(year%4==0)){
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)){
System.out.println("这个月是" + month + "月有31天");
}
else if(month == 2){
System.out.println("这个月是二月有29天");
}else{
System.out.println("这个月是" + month + "月有30天");
}
}else{
System.out.println("今年是:" + year + "年");
System.out.println("不是润年");
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)){
System.out.println("这个月是" + month + "月有31天");
}
else if(month == 2){
System.out.println("这个月是二月有28天");
}else{
System.out.println("这个月是" + month + "月有30天");
}
}
}
public static int getFebDay(){
int febDay;
if((year%100 !=0)(year%4==0)){
febDay = 29;
}else{
febDay = 28;
}
return febDay;
}
public static void computeTotalDays(int m){
m = month;
switch(m)
{
case 1:m = 1;System.out.println("1月1日开始过去了" + (day + 0) + "天");break;
case 2:m = 2;System.out.println("1月1日开始过去了" + (day + 31) + "天");break;
case 3:m = 3; System.out.println("1月1日开始过去了" + (day + 31+ JustJustJust.getFebDay()) + "天");break;
case 4:System.out.println("1月1日开始过去了" + (day + 31+ JustJustJust.getFebDay() + 31) + "天");break;
/*
* 写的匆忙,没有想到社么好方法,你就以此类推吧
case 5:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 6:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 7:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 8:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 9:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 10:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 11:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
case 12:System.out.println("1月1日开始过去了" + (day + ) + "天");break;
*/
}
}
public static void nextDay(){
System.out.println("明天是 " + (JustJustJust.getDay() + 1) + "号");
}
public static void main(String[] args) {
JustJustJust jjj = new JustJustJust();
jjj.validateInput();
jjj.getMonth();
jjj.isLeapYear();
jjj.daysInMonth();
jjj.computeTotalDays(month);
jjj.nextDay();
/*
* 要用下列六种METHOD
* validateInput (判定用户输入是否正确)
* getMonth (拿月份名称)
* isLeapYear (判定是否闰年)
* daysInMonth (确定一个月有多少天)
* computeTotalDays (计算从1月1日开始过去了多少天)
* nextDay (明天是几号.)*/
}
}
Q2: java程序定义一个日期类
正好我这有一个日期的工具类,你参考一下。我是直接黏贴进来的,看起来感觉有点乱,你复制后放到eclipse里看就整齐了。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.junit.Test;
/**
* @author Administrator
* 各种日期、时间转换的示例总结:
*/
public class DateFormatUtil {
/**
* 将当前时间转换成指定格式的日期形式的字符串输出
* */
@Test
public void dateToStr(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(new Date());
System.out.println(dateString);
}
/**
* 将给定时间格式的字符串,解析成Date输出
* @throws ParseException
* */
@Test
public void strToDate() throws ParseException{
String str = "201012241002";//yyyyMMddhhmm
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm");
Date date = sdf.parse(str);
System.out.println(date);
}
/**
* 字符串,格式化 为指定字符串
* @throws ParseException
*/
@Test
public void formatstr()throws ParseException{
String str = "20170314155847";//yyyyMMddhhmm
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str2 = sdf2.format(sdf.parse(str));
System.out.println(str2);
}
/**
* 操作时间:当前时间减去一天,一月,一年
*/
@Test
public void oprateDate(){
Date date = new Date();//获取当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// calendar.add(Calendar.YEAR, -1);//当前时间减去一年,即一年前的时间
// calendar.add(Calendar.MONTH, -1);//当前时间前去一个月,即一个月前的时间
calendar.add(Calendar.DATE, -1);
Date time = calendar.getTime();//获取一年前的时间,或者一个月前的时间
System.out.println(time);
}
}
Q3: java一个日期类MyDate,有两行代码不理解
你标记java简单日期类代码的那两行java简单日期类代码,第一行得到java简单日期类代码的dd返回的是你输入的那一年的那一个月的总天数java简单日期类代码,也就是那个月有多少天。第二行是说如果你输入的天数在0与那个月的天数之间则d就赋值给dayjava简单日期类代码,否则day就为1.
Q4: 用java定义一个日期类,急!!!
class MyDate{
public int year,month,day;
public MyDate(MyDate date){
year=date.year;
month=date.month;
day=date.day;
}
public boolean isLeapYear(){
return (((year%4==0)(year%100!=0))||(year%400==0));
}
public MyDate(int y,int m,int d){
year=y;
month=m;
day=d;
if(((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))((day1)||(day31))) System.out.println("wrong date");
if(((month==4)||(month==6)||(month==9)||(month==11))((day1)||(day30))) System.out.println("wrong date");
if(month==2){
if(isLeapYear()((day1)||(day29))) System.out.println("wrong date");
if(!isLeapYear()((day1)||(day28))) System.out.println("wrong date");
}
}
public boolean equal(MyDate date){
return (year==date.year month==date.month day==date.day);
}
public void incrementDay(){
if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)){
int flag=0;
if(day==31){month+=1;flag=1;}
if((day=30)(day=1)){day+=1;}
if(flag==1) day=1;
flag=0;
}
if((month==4)||(month==6)||(month==9)||(month==11)){
int flag=0;
if(day==30){month+=1;flag=1;}
if((day=29)(day=1)){day+=1;}
if(flag==1) day=1;
flag=0;
}
if(month==12){
int flag=0;
if(day==31){year+=1;month=1;flag=1;}
if((day=1)(day=30)){day+=1;}
if(flag==1) day=1;
flag=0;
}
if(month==2){
int flag=0;
if(isLeapYear()){
if(day==29){month+=1;flag=1;}
if((day=28)(day=1)){day+=1;}
if(flag==1) day=1;
flag=0;
}
else{
if(day==28){month+=1;flag=1;}
if((day=27)(day=1)){day+=1;}
if(flag==1) day=1;
flag=0;
}
}
}
public int getYear(){
return year;
}
public int getMonth(){
return month;
}
public int getDay(){
return day;
}
public String toString(){
return (year+"-"+month+"-"+day);
}
}
public class Mytest{
public static void main(String[] test){
MyDate date1=new MyDate(2000,2,28);
MyDate date2=new MyDate(2006,12,31);
MyDate date3=new MyDate(date2);
System.out.println(date3.equal(date2));
date1.incrementDay();
System.out.println(date1.getYear()+" "+date1.getMonth()+" "+date1.getDay());
System.out.println(date1.toString());
date2.incrementDay();
System.out.println(date2.getYear()+" "+date2.getMonth()+" "+date2.getDay());
System.out.println(date2.toString());
}
}
java简单日期类代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java编写日期类date、java简单日期类代码的信息别忘了在本站进行查找喔。







