java根据孩子生日,比如1979-05-13,怎么转换孩子年龄为几岁几月几周,比如一岁10月两周
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java根据孩子生日,比如1979-05-13,怎么转换孩子年龄为几岁几月几周,比如一岁10月两周相关的知识,希望对你有一定的参考价值。
public class TestDate/**
* 获取现在时间
*/
public static String getStringDate()
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(currentTime);
return dateString;
/**
* 两个时间之间的天数
*/
public static long getDays(String date1, String date2)
if (date1 == null || date1.equals(""))
return 0;
if (date2 == null || date2.equals(""))
return 0;
// 转换为标准时间
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
java.util.Date mydate = null;
try
date = myFormatter.parse(date1);
mydate = myFormatter.parse(date2);
catch (Exception e)
long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
return Math.abs(day);
public static void main(String[] args)
long day=getDays("1979-04-13", getStringDate());
long year=day/365;
long month=(day-365L*year)/30+1;
long week=day/7+1;
System.out.println(year+"岁"+month+"月"+week+"周");
由于没考虑闰年闰月,不是那么准确,另外题目对于周的显示上是指一个月的第几周还是总共多少周?
楼下JAVA软件工程师孙成 截取字符串的方法也很不错,但在计算周有错误,不应该用%,改成Math.abs((stopz +30)- (startz+30))/7+1
参考技术A 代码经过测试,可以放心使用import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import javax.swing.text.DateFormatter;
/**
* @author 作者 lvrt:
* @version 创建时间:2014-4-22 下午01:46:11
*/
public class Test
public static void main(String[] args)
System.out.println("请输入用户的生日,生日格式yyyy-MM-dd,如1988-08-12");
Scanner sc = new Scanner(System.in);
String birth = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try
Date birthDay = sdf.parse(birth);
Date now = new Date();
Long betweenDay = getBetweenDay(birthDay, now); //孩子出生到现在的天数
//对孩子的年份求职
int year = (int)(betweenDay / 365);
betweenDay = betweenDay - year*365; //此时间隔日期是一年以内的天数
int month = (int)(betweenDay / 30);
betweenDay = betweenDay - month*30; //此时间隔日期是一月以内的天数
int week = (int)(betweenDay / 7);
System.out.println("孩子的年龄是"+year+"年"+month+"月"+week+"周");
catch (ParseException e)
e.printStackTrace();
public static Long getBetweenDay(Date date1, Date date2)
Long days = Long.valueOf(0L);
if (date1.getTime() > date2.getTime())
days = Long.valueOf(date1.getTime() - date2.getTime());
else
days = Long.valueOf(date2.getTime() - date1.getTime());
return Long.valueOf(days.longValue() / 60L / 60L / 1000L / 24L);
追问
比如说孩子生日是2012年10月23日,就是获取孩子是几岁零几月零几周,是这样做吗
追答我这个是可以手动输入生日,比如说输入2013-10-23,求出他距离现在的日期是0年XX月xx周
太感谢了
参考技术B public class DateDemopublic static void main(String[] args) throws java.text.ParseException
String start = "1979-01-13";
java.text.SimpleDateFormat sim = new java.text.SimpleDateFormat("yyyy-MM-dd");
String stop = sim.format(new java.util.Date());
int zs = (Integer.parseInt(stop.substring(0,4)) - Integer.parseInt(start.substring(0,4)))-1;
int starty = Integer.parseInt(start.substring(5, 7));
int stopy = Integer.parseInt(stop.substring(5, 7));
int startz = Integer.parseInt(start.substring(8, 10));
int stopz = Integer.parseInt(stop.substring(8, 10));
int yf = 0;
int jz = 0;
if(starty > stopy)
yf = 12 - starty + stopy;
else
yf = 12 - stopy + starty;
if(startz > stopz)
jz = (startz - stopz) % 7;
else
jz = (stopz - startz) % 7;
System.out.println(zs + "岁" + yf + "个月" + jz + "周");
追问
比如说孩子生日是2012年10月23日,就是获取孩子是几岁零几月零几周,是这样做吗
追答是的,可以手动计算,也可以得到毫秒计算。
追问非常感谢
追答不用客气。
参考技术C不知道对不对:
小小的写了一下~
import java.text.SimpleDateFormat;import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
public class a
public static void main(String[] args)
a as = new a();
try
String str=as.getAge(new Date(),"2012-4-4");
System.out.println(str);
catch (Exception e)
e.printStackTrace();
/**
*
* @param date 现在日期
* @param birthday 出生日期
* @return
* @throws Exception
*/
public String getAge(Date date,String birthday) throws Exception
String str="";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = GregorianCalendar.getInstance();
try
calendar.setTime(date);
int theYear=calendar.get(Calendar.YEAR);
int theMonth=calendar.get(Calendar.MONTH)+1;
int theDay=calendar.get(Calendar.DATE);
calendar.setTime(sdf.parse(birthday));
int birthYear=calendar.get(Calendar.YEAR);
int birthMonth=calendar.get(Calendar.MONTH)+1;
int birthDay=calendar.get(Calendar.DATE);
int year=theYear-birthYear;
int month=theMonth-birthMonth;
int day=theDay-birthDay;
int week=day%7;
str=year+"岁"+month+"月"+week+"周"+day;
catch (ParseException e)
System.out.println(e);
return str;
追问
比如说孩子生日是2012年10月23日,就是获取孩子是几岁零几月零几周,是这样做吗
追答你跑一下代码就知道了啊! 我都给代码给你了 ,你多看看就行了。
追问多谢了
java根据身份证号码得到生日和性别
java根据身份证号码得到生日和性别
IDCards工具类
package com.liantuo.finance.utils;
//身份证工具类
public class IDCards {
/**
* 根据身份证号码得到生日,并返回性别
* @param num
* @return String[] string[0]生日 格式:19900510, string[1]性别
* 如果证件类型非法,则返回null
*/
public static String[] getDataByNo(String num) {
// 判断是否为空
if (num == null || num.trim().equals("")) {
return null;
}
//得到证件号码长度
int length = num.length();
// 判断是否为15或18位
if (length != 15 && length != 18) {
return null;
}
//如果证件号码为15位,转换为18位
if(length == 15){
num=uptoeighteen(num);
}
String[] data = new String[2];
// 得到生日
data[0] = num.substring(6, 14);
// 校验性别
data[1] = num.substring(14, 17);
// 性别代码为偶数是女性奇数为男性
if (Integer.parseInt(data[1]) % 2 == 0) {
data[1] = "女";
} else {
data[1] = "男";
}
return data;
}
// 15位身份证号码提升为18位
private static String uptoeighteen(String fifteencardid) {
String eightcardid = fifteencardid.substring(0, 6);
eightcardid = eightcardid + "19";
eightcardid = eightcardid + fifteencardid.substring(6, 15);
eightcardid = eightcardid + getVerify(eightcardid);
return eightcardid;
}
// 得到第18位的校验码
private static String getVerify(String eightcardid) {
int remaining = 0;
int[] wi = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
int[] vi = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
int[] ai = new int[18];
String returnStr = null;
try {
if (eightcardid.length() == 18) {
eightcardid = eightcardid.substring(0, 17);
}
if (eightcardid.length() == 17) {
int sum = 0;
String k = null;
for (int i = 0; i < 17; i++) {
k = eightcardid.substring(i, i + 1);
ai[i] = Integer.parseInt(k);
k = null;
}
for (int i = 0; i < 17; i++) {
sum = sum + wi[i] * ai[i];
}
remaining = sum % 11;
}
returnStr = remaining == 2 ? "X" : String.valueOf(vi[remaining]);
} catch (Exception ex) {
return null;
} finally {
wi = null;
vi = null;
ai = null;
}
return returnStr;
}
public static void main(String[] args) {
String[] dataByNo = getDataByNo("xxxxxxxxxxxx");
System.out.println(dataByNo[0]);
System.out.println(dataByNo[1]);
}
}
执行结果
以上是关于java根据孩子生日,比如1979-05-13,怎么转换孩子年龄为几岁几月几周,比如一岁10月两周的主要内容,如果未能解决你的问题,请参考以下文章