Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式

Java日期格式化
本文介绍Java中使用DateFormat和SimpleDateFormat进行日期格式化的方法,包括如何将日期格式化为特定样式,如dd-MM-yyyy,并提供了示例代码。

  今天楼主继续分享一道Java面试题:

  Java 中如何格式化一个日期?如格式化为 ddMMyyyy 的形式?
 Java 中,可以使用 SimpleDateFormat 类或者 joda-time 库来格式日期。DateFormat 类允许你使用多种流行的格式来格式化日期。参见答案中的  示例代码,代码中演示了将日期格式化成不同的格式,如 dd-MM-yyyy 或 ddMMyyyy。

 这里的参考代码没有了!


  我们来研究一下DateFormat和SimpleDateFormat的用法,查询到这些知识分享给大家:

  

 JAVA字符串转日期或日期转字符串这种需求、相信基本上每个项目都要用到、当然我以往做的项目也一样、今天又遇到了这样的问题、记录一下、以方便以后的使用、我了解的日期操作类有两个、一个是DateFormat、另外一个是SimpleDateFormat


一、DateFormat

此类是一个日期的格式化类、专门格式化日期的操作、因为java.util.Date类本身就已经包含了完整的日期、所以只需要将些日期按照一些好的格式格式化一下显示就好了
DateFormat是一个抽象类、按照以住的思路、直接使用其子类实例化即可、但是DateFormat 类本身的内部提供了可以直接为其实例化的操作

得到日期的DateFormat对象

public static final DateFormat getDateInstance()

得到日期时间的DateFormat对象

public static final DateFormat getDateTimeInstance()

直接使用DateFormat类完成Date类的转换功能

public final String format(Date date)


下面是得到日期和日期加时间的方法

public static String getDateZH() {
	// 声明一个DateFormat
	DateFormat df1 = null;
	// 得到日期的DateFormat对象
	df1 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD, 
		new Locale("zh", "CN"));
	return df1.format(new Date());
}

public static String getDateTimeZH() {
	// 声明一个DateFormat
	DateFormat df2 = null;
	// 得到日期时间的DateFormat对象
	df2 = DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,
		DateFormat.ERA_FIELD, new Locale("zh", "CN"));
	return df2.format(new Date());
}


二、SimpleDateFormat

此类的功能是完成日期的显示格式化的、在开发中、可以会将一种日期格式变为另外一种日期格式、比如:将日期:2015-07-19 10:11:30.345转换为日期:2015年07月19日10点11分30秒345毫秒

但是以上的两个日期中日期的数字是完全一样的、唯一不同的是日期的显示格式不同、所以要想实现这样的转换功能就必须依靠SimpleDateFormat类

SimpleDateFormat常量

需要注意的是、在创建SimpleDateFormat的时候一定要指定时间区域、不然会有如下警告

To get local formatting use getDateInstance(), getDateTimeInstance(), or getTimeInstance(), or use new SimpleDateFormat(String template, Locale locale) with for example Locale.US for ASCII dates.


以下通过SimpleDateFormat把String转Date的方法和把Date转String的方法

// String 转换为 Date
public static Date strToDate(String strdate) {
	DateFormat format = new SimpleDateFormat("yyyy-MM-dd", 
		new Locale("zh", "CN"));
	Date date = null;
	try {
		date = format.parse(strdate);
	} catch (ParseException e) {
		e.printStackTrace();
	}
	return date;
}

// Date 转换为 String
public static String dateToStr(Date date) {

	// 年月日****-**-**
	DateFormat format = new SimpleDateFormat("yyyy-MM-dd", 
		new Locale("zh", "CN"));
	String str = format.format(date);
	System.out.println("str:"   str);

	// 年月日**-*-*
	format = DateFormat.getDateInstance(DateFormat.SHORT);
	str = format.format(date);
	System.out.println(str);

	// 年月日****-*-*
	format = DateFormat.getDateInstance(DateFormat.MEDIUM);
	str = format.format(date);
	System.out.println(str);

	// ****年*月*日星期*
	format = DateFormat.getDateInstance(DateFormat.FULL);
	str = format.format(date);
	System.out.println(str);
	return str;
}


总结

DateFormat 可以直接使用、但其本身是一个抽象类、可以根据Locate指定的区域不同得到不同的日期时间显示效果、SimpleDateFormat 类是DateFormat 类的子类、一般情况下来讲 DateFormat 类很少会直接使用、而都使用SimpleDateFormat 类完成!

也推荐使用apache公司提供的jode-time库来完成日期格式的转换!


资料转载于博客:http://dditblog.com/itshare_306.html


  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗兰随风小欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值