Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算当前年龄;使用Java_Java_Nsdateformatter_Jodatime - Fatal编程技术网

计算当前年龄;使用Java

计算当前年龄;使用Java,java,nsdateformatter,jodatime,Java,Nsdateformatter,Jodatime,我正在计算用户的当前年龄。。但是使用我想使用的格式给我带来了一些问题 我可以单独询问年份、月份和日期,但更喜欢(mm/dd/yyyy) //需要帮助将用户输入的(mm/dd/yyyy)转换为: //yyyy; //嗯,; //dd; 包org.joda.time; 导入java.util.Calendar; 导入java.util.GregorianCalendar//闰年需要 导入java.util.Scanner; 导入java.io.*; 公营班级年龄计算{ 公共静态void main(字

我正在计算用户的当前年龄。。但是使用我想使用的格式给我带来了一些问题

我可以单独询问年份、月份和日期,但更喜欢(mm/dd/yyyy)

//需要帮助将用户输入的(mm/dd/yyyy)转换为:
//yyyy;
//嗯,;
//dd;
包org.joda.time;
导入java.util.Calendar;
导入java.util.GregorianCalendar//闰年需要
导入java.util.Scanner;
导入java.io.*;
公营班级年龄计算{
公共静态void main(字符串[]args)引发IOException{
int day=1,month=0,year=1,ageYears,ageMonths,ageDays;
Scanner myScanner=新扫描仪(System.in);
BufferedReader in=新的BufferedReader(新的InputStreamReader(System.in));
Calendar cd=Calendar.getInstance();
试一试{
系统输出打印(“输入您的出生日期(mm/dd/yyyy):”;
Dob=myScanner.nextLine();
//如何从(mm/dd/yyyy)格式获取年、月和日期?
年份=;
如果(年>光盘获取(日历年)){
系统打印(“出生日期无效”);
系统出口(0);
}
月份=
如果(月<1 | |月>12){
系统输出打印(“请输入1到12之间的月份”);
系统出口(0);
}
否则{
月--;
如果(年==cd.get(日历年)){
如果(月>光盘获取(日历月)){
系统输出打印(“无效月份!”);
系统出口(0);
}
}
}
如果(月==0 | |月==2 | |月==4 | |月==6 | |月==7 | |
月份==9 | |月份==11){
如果(天>31 | |天<1){
//下面是闰年数据
系统输出打印(“请输入1到31之间的日期”);
系统出口(0);
}
}
如果(月==3 | |月==5 | |月==8 | |月==10){
如果(天>30 | |天<1){
系统输出打印(“请输入1到30之间的日期”);
系统出口(0);
}
}
否则{
if(新的GregorianCalendar().isLeapYear(年)){
如果(天<1 | |天>29){
系统输出打印(“请输入1到29之间的日期”);
系统出口(0);
}
}
否则,如果(第28天){
系统输出打印(“请输入1到28之间的日期”);
系统出口(0);
}
}
如果(年==cd.get(日历年)){
if(month==cd.get(Calendar.month)){
如果(日期>cd.get(日历日期/月份)){
系统输出打印(“无效日期!”);
系统出口(0);
}
}
}
}
捕获(数字格式){
System.out.print(ne.getMessage()+“不是合法条目!”);
系统输出打印(“请输入号码”);
系统出口(0);
}
日历bd=新的公历日(年、月、日);
ageYears=cd.get(Calendar.YEAR)-bd.get(Calendar.YEAR);
if(新公历日(日历年、月、日)之前的cd{
岁--;
ageMonths=(12-(bd.get(Calendar.MONTH)+1)+(bd.get(Calendar.MONTH));
如果(日期>cd.get(日历日期/月份)){
ageDays=day-cd.get(日历.月的第天);
}
否则,如果(日期cd.get(日历日期/月份))
ageDays=day-cd.get(Calendar.day\u OF\u MONTH)-day;
否则,如果(日期
您可能需要这样的东西:

SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy", Locale.US);
Date date = sdf.parse(timestamp);
Calendar cd = Calendar.getInstance();
cd.setTime(date);

你可能需要这样的东西:

SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy", Locale.US);
Date date = sdf.parse(timestamp);
Calendar cd = Calendar.getInstance();
cd.setTime(date);

以下是如何读入和解析输入日期的提示:

SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy"); //note that mm is minutes, so you need MM here
Scanner s = new Scanner( System.in );

String dateLine = s.nextLine();
try
{
  Date d = f.parse( dateLine );
  System.out.println(d);
}
catch( ParseException e )
{
  System.out.println("please enter a valid date in format mm/dd/yyyy");
}
这只是一个例子,应该让你开始正确阅读日期

对于两个日期之间的年、日和月,我仍然建议使用JodaTime,因为这会让生活更轻松

使用标准Java工具,这可以帮助您:

Calendar c = Calendar.getInstance();
c.setTimeInMillis( System.currentTimeMillis() - d.getTime() );
System.out.println( c.get( Calendar.YEAR ) - 1970 ); //since year is based on 1970, subtract that
System.out.println( c.get( Calendar.MONTH ) );
System.out.println( c.get( Calendar.DAY_OF_MONTH ) );
请注意,您需要从较大的日期中减去较小的日期,即差值必须为正值(从当前时间减去出生日期时应为正值)


这将在2011年1月1日和2011年10月26日之间产生0年9个月零26天的差异,在1990年10月26日和2011年10月26日之间产生21年零1天的差异(因为我们已经开始了这一天)。

以下提示您如何读入和解析输入的日期:

SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy"); //note that mm is minutes, so you need MM here
Scanner s = new Scanner( System.in );

String dateLine = s.nextLine();
try
{
  Date d = f.parse( dateLine );
  System.out.println(d);
}
catch( ParseException e )
{
  System.out.println("please enter a valid date in format mm/dd/yyyy");
}
这只是一个例子,应该让你开始正确阅读日期

对于两个日期之间的年、日和月,我仍然建议使用JodaTime,因为这会让生活更轻松

使用标准Java工具,这可以帮助您:

Calendar c = Calendar.getInstance();
c.setTimeInMillis( System.currentTimeMillis() - d.getTime() );
System.out.println( c.get( Calendar.YEAR ) - 1970 ); //since year is based on 1970, subtract that
System.out.println( c.get( Calendar.MONTH ) );
System.out.println( c.get( Calendar.DAY_OF_MONTH ) );
请注意,您需要从较大的日期中减去较小的日期,即差值必须为正值(从当前时间减去出生日期时应为正值)


这将使2011年1月1日和2011年10月26日之间的差值为0年9个月零26天,而1990年10月26日和2011年10月26日之间的差值为21年零1天(因为我们已经开始了这一天)。

如果要使用JodaTime:

String dob = myScanner.nextLine();
DateTimeFormatter format = DateTimeFormatter.forPattern("MM/dd/yyyy");
DateTime dateTimeOfBirth = DateTime.parse(dob, format);

year = dateTimeOfBirth.getYear();
// Etc

如果要使用JodaTime:

String dob = myScanner.nextLine();
DateTimeFormatter format = DateTimeFormatter.forPattern("MM/dd/yyyy");
DateTime dateTimeOfBirth = DateTime.parse(dob, format);

year = dateTimeOfBirth.getYear();
// Etc

试一试,它将年龄放入一个名为“form”的表单中名为age的表单字段中,假设您将您的文本框(其中输入了DOB)“DOB”

var d=document.getElementById('dob').value.split('/');
var today=新日期();
var bday=新日期(d[2],d[1],d[0]);
var age=today.getFullYear()-bday.getFullYear();
如果(today.getMonth()
试试这个,它会在一个名为“form”的表单中将年龄输入到一个名为age的表单字段中,假设您将您的文本框(其中输入了DOB)“DOB”

var d=document.getElementById('dob'))