java date与string 互转

文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进
来!
        用法: SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );
        这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss
就不需要我再解释了吧!
        PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小
时制,而hh是12小时制。
1.字符串转日期
 
2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " );
2.日期转字符串

假如把今天的日期转成字符串可用 String str = sdf.format(new Date());
        这个字符串内容的格式类似2008-07-10 19:20:00。
        透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008
年7月10日,我们可以这么写:
        SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy年MM月dd日 " );
        String str = sdf.format(new Date());
        str便会依照我们设定的格式输出了。

附编写好的一个简单实例:

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ConvertDemo {

/**
* 日期转换成字符串
* @param date
* @return str
*/
public static String DateToStr(Date date) {
  
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String str = format.format(date);
   return str;
}

/**
* 字符串转换成日期
* @param str
* @return date
*/
public static Date StrToDate(String str) {
  
   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date date = null;
   try {
    date = format.parse(str);
   } catch (ParseException e) {
    e.printStackTrace();
   }
   return date;
}

public static void main(String[] args) {
  
   Date date = new Date();
   System.out.println("日期转字符串:" + ConvertDemo.DateToStr(date));
   System.out.println("字符串转日期:" + ConvertDemo.StrToDate(ConvertDemo.DateToStr(date)));
  
}

}


除了SimpleDateFormat外还可以使用Calendar
创建 Date 仍然比较容易:
Date aDate = new Date(System.currentTimeMillis());
或者可以使用以下代码:
Date aDate = new Date();
这将为我们提供一个表示当前确切日期和时间的 Date,并以当前地区 格式显示。国际化已经超出了本教程的范围,只要知道获得的 Date 与本地机器的地区时间一致即可。
既然有了一个实例,为什么不能处理它呢?坦率地说,它太小了。我们可以将一个 Date 与另一个日期进行比较,查看前一个日期是在后一个日期的 before() 还是 after()。还可以通过调用 setTime() 将日期重新设置为一个新的时间瞬间,setTime() 带有一个 long 参数,该参数表示从 1970 年 1 月 1 日午夜起至现在过去了多少毫秒,这也正是 System.currentTimeMillis() 返回的值。在此之外,我们受到了限制。
日历
现在,Date 给人们带来的混乱要多于它为人们带来的有用性,因为大部分日期处理行为都受到人们的抨击。人们习惯于获得并设置部分 Date(比如,年、月,等等)。现在,必须同时处理 Date 和 Calendar 才能设置部分 Date。但是一旦有了 Date 实例,就可以使用 Calendar 获得并设置部分 Date。例如:
Date aDate = new Date(System.currentTimeMillis());
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTime(aDate);
在这里,我们创建了一个 GregorianCalendar,并将它的时间设置为以前创建的 Date。通过在 Calendar 上调用不同的方法,也能做到这一点:
Calendar calendar = GregorianCalendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
通过 Calendar,我们现在可以访问和操作 Date 的组件。获得并设置部分 Date 也成为一个简单的过程。只需要在 Calendar 上调用适当的 getter 和 setter 即可,如下所示:
calendar.set(Calendar.MONTH, Calendar.JULY);
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.YEAR, 1978);
calendar.set(Calendar.HOUR, 2);
calendar.set(Calendar.MINUTE, 15);
calendar.set(Calendar.SECOND, 37);
System.out.println(calendar.getTime());
这将输出 1987 年 7 月 15 日上午 2 点 15 分 37 秒的格式化后的输出字符串。(在 Calendar 上也有一些辅助方法,允许同时设置一些或几乎所有的组件。)这里调用的是 set(),它带有两个参数:
· 想要设置的 Date 的 field(或组件)。 
· 该字段的值。 
我们可以用 Calendar 类中指定的常数来引用这些字段。在某些情况下,同一字段会有一个以上的名称,比如 Calendar.DAY_OF_MONTH,还可以用 Calendar.DATE 来引用它。除了可能是 Calendar.MONTH 的值和 Calendar.DATE 的值之外,其他的值都很简单。在 Java 语言的日期中,月份是基于 0 的(也就是说,1 月是 0),这使得使用指定的常数来设置月份值成为一种明智之举,但也使得正确地显示日期成为令人沮丧的事。小时的数值是从 0 到 24。
一旦有一个建立好的 Date,就可以提取其中的一部分。
System.out.println("The YEAR is: " + calendar.get(Calendar.YEAR));
System.out.println("The MONTH is: " + calendar.get(Calendar.MONTH));
System.out.println("The DAY is: " + calendar.get(Calendar.DATE));
System.out.println("The HOUR is: " + calendar.get(Calendar.HOUR));
System.out.println("The MINUTE is: " + calendar.get(Calendar.MINUTE));
System.out.println("The SECOND is: " + calendar.get(Calendar.SECOND));
System.out.println("The AM_PM indicator is: " + calendar.get(Calendar.AM_PM));
内置日期的格式化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值