java输入时间用什么 java怎么格式化输入日期
大家好,关于java输入时间用什么很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java怎么格式化输入日期的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
java编写一个简单的输入生日计算下一个生日时间的代码
import java.util.Calendar;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
/**
* Title: Test03.java<br>
* 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;
}
}
}
java怎么格式化输入日期
SimpleDateFormat
是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化。
使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat中的 getTimeInstance、getDateInstance或 getDateTimeInstance来创建日期-时间格式器。每一个这样的类方法都能够返回一个以默认格式模式初始化的日期/时间格式器。可以根据需要使用 applyPattern方法来修改格式模式。
日期和时间模式
日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母'A'到'Z'和'a'到'z'被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号(')引起来,以免进行解释。"''"表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符'A'到'Z'和'a'到'z'都被保留):
java语言中的date类及方法的用法
Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着很重要的地位,所以在这里想对这两个类进行一个基本的讲解,由于技术有限,不到之处请指正。
Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的功能都已移植到另外一个类里面,这就是今天要讲到的第二个类Calendar里面。
在讲两个类之前,这里又不能不多提一个类,那就是DateFormat类,这个类是用来格式化日期的,稍后也会讲到。
首先,让我们来看一个获取当前时间的例子:
Date date= new Date();
System.out.println(date.getTime());上面的语句首先创建了Date的一个对象,接着使用getTime方法获得当前的时间,但是注意了,输出后的结果确实一串长整型的数字,这是为什么?实际上这是系统根据当前时间计算出来的一个long型的数,至于是如何计算出来的就不在本文中讲述了,那既然这样的话又如何显示正确的时间呢?这就要利用到上面的DateFormat类了,这个类是一个基类,它有一个子类是SimpleDateFormat,具体用法请看下面的代码:
Date date= new Date();
SimpleDateFormat dateFm= new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
System.out.println(dateFm.format(date));这段代码开始创建了一个Date的对象,用来获取当前时间,而重点就在于后面的SimpleDateFormat对象,这个对继承了DateFormat,利用format方法对Date对象进行格式化,然后输出,而格式的定制是由用户定制的,EEEE代表星期,MMMM代表月份,而dd代表日,yyyy代表年。使用这个方法就可以根据用户自定义的格式进行输出时间。
上面介绍了由用户自定义格式的输出时间,下面将来介绍通过JAVA类库提供的标准格式输出时间,这就要用到DateFormat类了,请看以下代码:
Date date= new Date();
DateFormat dateFm= DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.SHORT);
System.out.println(dateFm.format(date));这里使用的方法和用户自定义的方法差不多,只是这里使用的是一个抽象类,由于DateFormat是一个抽象类,所以它不能通过构造函数构造对象,在这里是通过getDateTimeInstance()方法获得该对象,而所传递的参数就是DateFormat里面定义的一些常量,系统根据这些常量输出当前时间,由于这里使用的是getDateTimeInstance方法,所以将传递两个常量参数,用来分别格式化日期和当前的时间。
上面讲述了如何获得系统时间以及如何格式化输出,那如果想获取或者设置时间当中的某一部分又该如何呢?例如年,月,日。这就要靠Calendar这个类了,这个类也是一个抽象类,它有一个子类GregorianCalendar,接下来我会利用这个子类来演示这个过程,请看以下代码:
DateFormat dateFormat= DateFormat.getDateInstance(DateFormat.FULL);
GregorianCalendar cal= new GregorianCalendar();
cal.setTime(new Date());
System.out.println("System Date:"+ dateFormat.format(cal.getTime()));
cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);
System.out.println("After Setting Day of Week to Friday:"+
dateFormat.format(cal.getTime()));
这段代码当中,首先创建了一个DateFormat对象进行格式设置,接着创建了一个GregorianCalendar对象cal,接着使用cal.setTime()方法设置cal对象中的时间为当前时间,然后通过format格式化由cal.getTime()返回的时间进行输出,后面利用set方法设置cal的日期为当前星期的FRIDAY,此时cal中存储的时间就是这个星期五的该时刻,而后面利用format格式化输出,假如当前时间为2005年1月27日星期4的11点30分,那么最后将那句将会输出2005年1月28日星期5的11点30分。
关于java输入时间用什么的内容到此结束,希望对大家有所帮助。