当前位置: 代码迷 >> Java相关 >> [求助]日期格式化问题,我写完了,可是还有点小问题,帮忙看下
  详细解决方案

[求助]日期格式化问题,我写完了,可是还有点小问题,帮忙看下

热度:276   发布时间:2007-07-13 13:24:01.0
[求助]日期格式化问题,我写完了,可是还有点小问题,帮忙看下
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

class TestDateFormat
{
int year;
int date;
String month;
String week;
String temp;
String tempYear;
String tempDate;
Date aDate;
SimpleDateFormat dateFormat=null;
TestDateFormat(String temp)
{
this.temp=temp;
this.check();
}
TestDateFormat()
{
temp=this.systemIn();
this.check();
}
public void check() //通过检索字符,为年月日初始化
{
if(temp.indexOf("/")!=-1) //第一种格式,为年月日初始化 即MM/dd/yyyy型
{
month=temp.substring(0, temp.indexOf("/"));
tempDate=temp.substring(temp.indexOf("/")+1,temp.indexOf("/", temp.indexOf("/")+1));
date=Integer.parseInt(tempDate);
tempYear=temp.substring(temp.indexOf("/", temp.indexOf("/")+1)+1,temp.length());
year=Integer.parseInt(tempYear);
if(year<1800||year>2100)
{
System.out.println("输入年限超出范围,请重新输入");
this.systemIn();
}
}
else if(temp.indexOf(" ")!=-1&&temp.indexOf(",")!=-1) //第二种格式 即MM dd,yyyy型
{
month=temp.substring(0,temp.indexOf(" "));
tempDate=temp.substring(temp.indexOf(" ")+1,temp.indexOf(","));
date=Integer.parseInt(tempDate);
tempYear=temp.substring(temp.indexOf(","), temp.length());
year=Integer.parseInt(tempYear);
if(year<1800||year>2100)
{
System.out.println("输入年限超出范围,请重新输入");
this.systemIn();
}
}
}
public String systemIn() //键盘输入字符串
{
String s="";
System.out.println("请输入:\n 如:3/18/2007");
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
}
catch(IOException e)
{
System.out.println("产生异常");
}
System.out.println("你输入的字符串是"+s);
return s;
}
public String stringFormat() //符合Date要求的字符串
{
return tempYear+"-"+month+"-"+tempDate;
}
public Date dateFormat() //将字符串转化为Date对象
{
SimpleDateFormat df = new SimpleDateFormat("d-MMM-yyyy", Locale.ENGLISH);
try
{
aDate = df.parse(this.stringFormat());
}
catch (ParseException e)
{
e.printStackTrace();
}
return aDate;
}
public String toString()
{
dateFormat = new SimpleDateFormat("MM dd,yyyy,E");
return "输出:"+dateFormat.format(aDate).toString();
}

}

public class Bh
{
public static void main(String[] args)
{
TestDateFormat temp=new TestDateFormat();
System.out.println(temp.toString());
}

}

搜索更多相关的解决方案: 格式化  

----------------解决方案--------------------------------------------------------
TestDateFormat(String temp)
{
this.temp=temp;
this.check();
}
这个构造函数有什么用啊?好像没用到吗?
----------------解决方案--------------------------------------------------------
以下是引用heilong在2007-7-13 15:54:48的发言:
TestDateFormat(String temp)
{
this.temp=temp;
this.check();
}
这个构造函数有什么用啊?好像没用到吗?

是,这是备用的,不影响程序的!


----------------解决方案--------------------------------------------------------
没人回答偶啊?!
----------------解决方案--------------------------------------------------------

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

class TestDateFormat
{
int year;
int date;
String month;
String week;
String temp;
String tempYear;
String tempDate;
Date aDate;
SimpleDateFormat dateFormat=null;
TestDateFormat(String temp)
{
this.temp=temp;
this.check();
}
TestDateFormat()
{
temp=this.systemIn();
this.check();
}
public void check() //通过检索字符,为年月日初始化
{
if(temp.indexOf("/")!=-1) //第一种格式,为年月日初始化 即MM/dd/yyyy型
{
month=temp.substring(0, temp.indexOf("/"));
tempDate=temp.substring(temp.indexOf("/")+1,temp.indexOf("/", temp.indexOf("/")+1));
date=Integer.parseInt(tempDate);
tempYear=temp.substring(temp.indexOf("/", temp.indexOf("/")+1)+1,temp.length());
year=Integer.parseInt(tempYear);
if(year<1800||year>2100)
{
System.out.println("输入年限超出范围,请重新输入");
this.systemIn();
}
}
else if(temp.indexOf(" ")!=-1&&temp.indexOf(",")!=-1) //第二种格式 即MM dd,yyyy型
{
month=temp.substring(0,temp.indexOf(" "));
tempDate=temp.substring(temp.indexOf(" ")+1,temp.indexOf(","));
date=Integer.parseInt(tempDate);
tempYear=temp.substring(temp.indexOf(","), temp.length());
year=Integer.parseInt(tempYear);
if(year<1800||year>2100)
{
System.out.println("输入年限超出范围,请重新输入");
this.systemIn();
}
}
}
public String systemIn() //键盘输入字符串
{
String s="";
System.out.println("请输入:\n 如:3/18/2007");
try
{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
s=in.readLine();
}
catch(IOException e)
{
System.out.println("产生异常");
}
System.out.println("你输入的字符串是"+s);
return s;
}
public String stringFormat() //符合Date要求的字符串
{
return tempYear+"-"+month+"-"+tempDate;
}
public Date dateFormat() //将字符串转化为Date对象
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
try
{
aDate = df.parse(this.stringFormat());
}
catch (ParseException e)
{
e.printStackTrace();
}
return aDate;
}
public String toString()
{
dateFormat = new SimpleDateFormat("MM dd,yyyy,E");
return "输出:"+dateFormat.format(dateFormat()).toString();
}

}

public class Bh
{
public static void main(String[] args)
{
TestDateFormat temp=new TestDateFormat();
System.out.println(temp.toString());
}

}


----------------解决方案--------------------------------------------------------
toString()里面的aDate还未实例化
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);里面的格式要和
tempYear+"-"+month+"-"+tempDate;的格式一致
----------------解决方案--------------------------------------------------------
以下是引用myfor在2007-7-14 12:36:12的发言:
toString()里面的aDate还未实例化
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);里面的格式要和
tempYear+"-"+month+"-"+tempDate;的格式一致

能再具体点吗?!
格式怎么不一致了?
我认为是一致的呀


----------------解决方案--------------------------------------------------------
你的程序里面是
SimpleDateFormat df = new SimpleDateFormat("d-MMM-yyyy", Locale.ENGLISH);
是日-月-年的顺序
但是tempYear+"-"+month+"-"+tempDate
是年-月-日的顺序
----------------解决方案--------------------------------------------------------
有吗?
我看看哈!
----------------解决方案--------------------------------------------------------
以下是引用myfor在2007-7-14 12:50:01的发言:
你的程序里面是
SimpleDateFormat df = new SimpleDateFormat("d-MMM-yyyy", Locale.ENGLISH);
是日-月-年的顺序
但是tempYear+"-"+month+"-"+tempDate
是年-月-日的顺序

啊啊啊啊.大姐,我要请你吃饭!


----------------解决方案--------------------------------------------------------
  相关解决方案