java 格式化日期出现问题,求高手,急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 格式化日期出现问题,求高手,急相关的知识,希望对你有一定的参考价值。

import java.text.*;
import java.util.*;
public class IDCARD
public static void main(String[] args)
Date d=new Date();
DateFormat df=new
SimpleDateFormat( "yyyyMMdd");
String str=df.format(d);
System.out.println( "当前时间是" + str);
Scanner sc1=new Scanner(System.in);
System.out.println("请输入第一个身份证号:");
String st1=sc1.next();
String date1=st1.substring(6, 14);
Scanner sc2=new Scanner(System.in);
System.out.println("请输入第二个身份证号:");
String st2=sc2.next();
String date2=st2.substring(6, 14);
int d1=Integer.parseInt(str);
int d2= Integer.parseInt(date1);
int d3= Integer.parseInt(date2);
int mm1=d1-d2;
int mm2=d1-d3;
String s1=Integer.toString(mm1);
String s2=Integer.toString(mm2);
String y1=s1.substring(0, 2);
String m1=s1.substring(3, 4);
String y2=s2.substring(0, 2);
String m2=s2.substring(3, 4);
int fullyear1=Integer.parseInt(y1);
int mon1=Integer.parseInt(m1);
if(mon1<6)
fullyear1=fullyear1-1;
System.out.println("第一个人的年龄是:"+fullyear1);
int fullyear2=Integer.parseInt(y2);
int mon2=Integer.parseInt(m2);
if(mon2<6)
fullyear2=fullyear2-1;
System.out.println("第二个人的年龄是:"+fullyear2);
if(fullyear1<fullyear2)
SimpleDateFormat a1=new SimpleDateFormat("yyyy-MM-dd");
String day1 = a1.format(date2);
System.out.println("年龄较大的生日是" +day1);
SimpleDateFormat a2=new SimpleDateFormat("yyyy年M月dd日");
String day2 = a2.format(date1);
System.out.println("年龄较小的生日是" +day2);
else
SimpleDateFormat a1=new SimpleDateFormat("yyyy-MM-dd");
String day1 = a1.format(date1);
System.out.println("年龄较大的生日是" +day1);
SimpleDateFormat a2=new SimpleDateFormat("yyyy年M月dd日");
System.out.println("年龄较小的生日是" +day2);



前半部分正常,后半部分就出错了,好像不能初始化,想要把已有的date1和date2用不同格式输出,该怎么办?

你好,极小的错误,修改后的如下,修改的地方加了注释

import java.text.*;
import java.util.*;

public class IDCARD
public static void main(String[] args) throws ParseException
Date d = new Date();
DateFormat df = new SimpleDateFormat("yyyyMMdd");
String str = df.format(d);
System.out.println("当前时间是" + str);
Scanner sc1 = new Scanner(System.in);
System.out.println("请输入第一个身份证号:");
String st1 = sc1.next();
String date1 = st1.substring(6, 14);
Scanner sc2 = new Scanner(System.in);
System.out.println("请输入第二个身份证号:");
String st2 = sc2.next();
String date2 = st2.substring(6, 14);
int d1 = Integer.parseInt(str);
int d2 = Integer.parseInt(date1);
int d3 = Integer.parseInt(date2);
int mm1 = d1 - d2;
int mm2 = d1 - d3;
String s1 = Integer.toString(mm1);
String s2 = Integer.toString(mm2);
String y1 = s1.substring(0, 2);
String m1 = s1.substring(3, 4);
String y2 = s2.substring(0, 2);
String m2 = s2.substring(3, 4);
int fullyear1 = Integer.parseInt(y1);
int mon1 = Integer.parseInt(m1);
if (mon1 < 6)
fullyear1 = fullyear1 - 1;
System.out.println("第一个人的年龄是:" + fullyear1);
int fullyear2 = Integer.parseInt(y2);
int mon2 = Integer.parseInt(m2);
if (mon2 < 6)
fullyear2 = fullyear2 - 1;
System.out.println("第二个人的年龄是:" + fullyear2);
if (fullyear1 < fullyear2)
SimpleDateFormat a1 = new SimpleDateFormat("yyyy-MM-dd");
String day1 = a1.format(new SimpleDateFormat("yyyyMMdd").parse(date1));//使用new SimpleDateFormat("yyyyMMdd").parse(date1)这种方法,把字符串19870601这样的转换成date,然后再把date转成指定形式的字符串
System.out.println("年龄较大的生日是" + day1);
SimpleDateFormat a2 = new SimpleDateFormat("yyyy年M月dd日");
String day2 = a2.format(new SimpleDateFormat("yyyyMMdd").parse(date1));//修改原理同上
System.out.println("年龄较小的生日是" + day2);
else
SimpleDateFormat a1 = new SimpleDateFormat("yyyy-MM-dd");
String day1 = a1.format(new SimpleDateFormat("yyyyMMdd").parse(date1));//修改原理同上
System.out.println("年龄较大的生日是" + day1);
SimpleDateFormat a2 = new SimpleDateFormat("yyyy年M月dd日");
String day2 = a2.format(new SimpleDateFormat("yyyyMMdd").parse(date1));//这里你的少了一句定义day2
System.out.println("年龄较小的生日是" + day2);


参考技术A 三个错误:
1、if中:String day2 = a2.format(date1); 应当为String day2 = a2.format(date2);
2、else中少一句:String day2 = a2.format(date1); //将这一句插在最后一行输出语句上面
3、a2.format()中应是个DTAE对象,而不是个字符串。

在JSP中如何获得当前日期(急)!!!

有知道的告诉下,谢谢了。

<%@ page import="java.util.*,java.text.*"%>
<%
//Date是Jdk中的日期对象,可以精确到秒,这里取到当前的日期
Date date = new Date();
//SimpleDateFormat是Jdk中的日期格式化对象,可以对以上日期进行格式化,格式化后的日期将以指定格式显示
/* 格式定义如下
* y是年
* M是月
* d是日
* H是时
* m是分钟
* s是秒钟
* 例:yyyy-MM-dd HH:mm:ss格式化后的一个时间是2005-12-07 12:32:00
* 格式化当前时间按当前时间显示
*/
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//最后一步,利用格式化对象格式化日期对象,返回格式化的时间字符串
String formatDate=sdf.format(date);

//更多祥情参考jdk文档
%>
参考技术A 请看下面这段代码:
sDt="2002-11-20 11:48:55"
1)我想获得当前year,用的方法是dt.getYear();但得到的不是2002,却是102, dt.getMonth()得到的却是4,而应该是11才对呀,为什么?
2)我只想得到当前的日期(即2002-11-20),不要后面的时间,用什么函数呢?

<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<body>
<%
Date dt= new Date();
int iY=dt.getYear();
String sDt=dt.toLocaleString();
%>
today is
<%=sDt %><br>

<br>
Year is <%=iY%> <br>
Month is <%=dt.getMonth()%>

</body>
</html>

---------------------------------------------------------------

Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DATE);

String date=year+"-"+month+"-"+day";
out.println(date);

---------------------------------------------------------------

获取今天的日期字符串
String today=java.text.DateFormat.getDateInstance().format(new java.util.Date());
获取今天的日期
new java.sql.Date(System.currentTimeMillis())
Date expirationDate = new GregorianCalendar(2001, Calendar.JULY,1).getTime();
Book knuthBook = new Book("The Art of Computer Programming", 49.95f);
DateFormat.getDateInstance().format(myDate);//日期格式
ORACLE 中日期转换:to_date('2001-4-16 00:00:00','YYYY-MM-DD HH24:MI:SS');
new java.util.Date();
参考技术B String ddate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());

只有简单的一句,一定不能少了java.util.*,java.text.*本回答被提问者采纳
参考技术C <%@ page import="java.util.Date"%>
<%Date myDate = new Date();%>
参考技术D DateTime.Now

以上是关于java 格式化日期出现问题,求高手,急的主要内容,如果未能解决你的问题,请参考以下文章

求JAVA高手解答!有关于字符串类型转换成日期型!

求C#高手,Excel中单元格显示的是日期格式,当我读取到DataGridView中时,就变成了文本格式了

关于java,js判断日期格式,急。在线等回复。

java中将日期日期如何转换成另一种格式??高手!!!

急!将mysql中日期转化为时间戳

求java自动生成一个序列号的方法,急急急...