黑马程序员技术交流社区
标题:
我自己编写了个取得完整时间的程序,但是存在问题,求解!!!
[打印本页]
作者:
邓海涛
时间:
2012-4-8 09:31
标题:
我自己编写了个取得完整时间的程序,但是存在问题,求解!!!
import java.util.* ;
class DateTime{ // 以后直接通过此类就可以取得日期时间
private Calendar calendar = null ; // 声明一个Calendar对象,取得时间
public DateTime(){ // 构造方法中直接实例化对象
this.calendar = new GregorianCalendar() ;
}
public String getDate(){ // 得到的是一个日期:格式为:yyyy-MM-dd HH:mm:ss.SSS
// 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能
StringBuffer buf = new StringBuffer() ;
buf.append(calendar.get(Calendar.YEAR)).append("-") ; // 增加年
buf.append(calendar.get(Calendar.MONTH)+1).append("-") ; // 增加月
buf.append(calendar.get(Calendar.DAY_OF_MONTH)).append(" ") ; // 取得日
buf.append(calendar.get(Calendar.HOUR_OF_DAY)).append(":") ; // 取得时
buf.append(calendar.get(Calendar.MINUTE)).append(":") ;
buf.append(calendar.get(Calendar.SECOND)).append(".");
buf.append(calendar.get(Calendar.MILLISECOND)) ;
return buf.toString() ;
}
public String getDateComplete(){ // 得到的是一个日期:格式为:yyyy年MM月dd日 HH时mm分ss秒SSS毫秒
// 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能
StringBuffer buf = new StringBuffer() ;
buf.append(calendar.get(Calendar.YEAR)).append("年") ; // 增加年
buf.append(calendar.get(Calendar.MONTH)+1).append("月") ; // 增加月
buf.append(calendar.get(Calendar.DAY_OF_MONTH)).append("日") ; // 取得日
buf.append(calendar.get(Calendar.HOUR_OF_DAY)).append("时") ; // 取得时
buf.append(calendar.get(Calendar.MINUTE)).append("分") ; // 取得分
buf.append(calendar.get(Calendar.SECOND)).append("秒") ; // 取得秒
buf.append(calendar.get(Calendar.MILLISECOND)).append("毫秒") ; // 取得毫秒
return buf.toString() ;
}
public String getTimeStamp(){ // 得到的是一个时间戳
// 考虑到程序要频繁修改字符串,所以使用StringBuffer提升性能
StringBuffer buf = new StringBuffer() ;
buf.append(calendar.get(Calendar.YEAR)) ; // 增加年
buf.append(calendar.get(Calendar.MONTH)+1) ; // 增加月
buf.append(calendar.get(Calendar.DAY_OF_MONTH)) ; // 取得日
buf.append(calendar.get(Calendar.HOUR_OF_DAY)) ; // 取得时
buf.append(calendar.get(Calendar.MINUTE)) ; // 取得分
buf.append(calendar.get(Calendar.SECOND)); // 取得秒
buf.append(calendar.get(Calendar.MILLISECOND)) ; // 取得毫秒
return buf.toString() ;
}
};
public class GetTime{
public static void main(String args[]){
DateTime dt = new DateTime() ;
System.out.println("系统日期:"+dt.getDate()) ;
System.out.println("中文日期:"+dt.getDateComplete()) ;
System.out.println("时间戳:"+dt.getTimeStamp()) ;
}
};
想必大家都看见运行结果了,我想要达到的取得完整的日期的愿望是实现了,但是不符合我们生活中的日期格式啊,比如说我们日常的日期为:2012-04-08 但是我的程序出来的结果是:2012-4-8
问题是怎么让我的程序实现前面的那种效果呢?
谢谢
作者:
宋蕈
时间:
2012-4-8 09:40
增加一个补零的方法即可:
// 传入要补零的 时间的字符串,和 需要的 位数, 比如要达到04-08 ,n的传入值就是2
public String addZero(String date,int n){
StringBuffer sb=new StringBuffer();
sb.append(date)
while(date.length<n){
sb.insert(0,"0");
}
return sb.toString();
}
这样就行了
作者:
邓海涛
时间:
2012-4-8 09:43
恩,我试了下,能出来结果了,谢谢啊
作者:
niceBoy
时间:
2012-4-8 10:02
String类的format()方法可以用来格式化。具体看api
作者:
黑马王建伟
时间:
2012-8-11 22:50
楼主,你的那种方法没错,我想你看看我的方法是不是更简单,想要什么格式随便你定义C:\Documents and Settings\zjw\桌面\黑马论坛\日期格式定义.jpg
作者:
黑马王建伟
时间:
2012-8-11 22:52
我截的代码图没传上去,直接代码吧,
public static void main(String[] args) {
Date date=new Date();
SimpleDateFormat sdf_1=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf_2=new SimpleDateFormat("yyyy年MM月dd日");
System.out.println("日期格式一:"+sdf_1.format(date));
System.out.println("日期格式二:"+sdf_2.format(date));
}
作者:
pray
时间:
2014-4-26 05:10
看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横网络bbs多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。楼主,是你让我深深地理解了【人外有人,天外有天】这句话。谢谢侬!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2