Date和String相互转换

  • Post author:
  • Post category:其他



Java String和Date的转换

String—>Date方法一:



  1. String dateString =


    “2012-12-06 ”


    ;



  2. try




  3. {

  4. SimpleDateFormat sdf =

    new


    SimpleDateFormat(


    “yyyy-MM-dd ”


    );


  5. Date date = sdf.parse(dateString);

  6. }


  7. catch


    (ParseException e)


  8. {

  9. System.out.println(e.getMessage());

  10. }

String—>Date方法二:



  1. import


    java.text.ParseException;



  2. import


    java.text.SimpleDateFormat;



  3. import


    java.util.Calendar;



  4. import


    java.util.Date;




  5. import


    org.apache.commons.lang.StringUtils;




  6. /**



  7. * 日期Util类



  8. *



  9. * @author calvin



  10. */





  11. public




    class


    DateUtil


  12. {


  13. private




    static


    String defaultDatePattern =


    “yyyy-MM-dd ”


    ;




  14. /**



  15. * 获得默认的 date pattern



  16. */





  17. public




    static


    String getDatePattern()


  18. {


  19. return


    defaultDatePattern;


  20. }



  21. /**



  22. * 返回预设Format的当前日期字符串



  23. */





  24. public




    static


    String getToday()


  25. {

  26. Date today =

    new


    Date();



  27. return


    format(today);


  28. }



  29. /**



  30. * 使用预设Format格式化Date成字符串



  31. */





  32. public




    static


    String format(Date date)


  33. {


  34. return


    date ==


    null


    ?


    ” ”


    : format(date, getDatePattern());


  35. }



  36. /**



  37. * 使用参数Format格式化Date成字符串



  38. */





  39. public




    static


    String format(Date date, String pattern)


  40. {


  41. return


    date ==


    null


    ?


    ” ”


    :


    new


    SimpleDateFormat(pattern).format(date);


  42. }



  43. /**



  44. * 使用预设格式将字符串转为Date



  45. */





  46. public




    static


    Date parse(String strDate)


    throws


    ParseException


  47. {


  48. return


    StringUtils.isBlank(strDate) ?


    null


    : parse(strDate,


  49. getDatePattern());

  50. }



  51. /**



  52. * 使用参数Format将字符串转为Date



  53. */





  54. public




    static


    Date parse(String strDate, String pattern)



  55. throws


    ParseException


  56. {


  57. return


    StringUtils.isBlank(strDate) ?


    null


    :


    new


    SimpleDateFormat(


  58. pattern).parse(strDate);

  59. }



  60. /**



  61. * 在日期上增加数个整月



  62. */





  63. public




    static


    Date addMonth(Date date,


    int


    n)


  64. {

  65. Calendar cal = Calendar.getInstance();

  66. cal.setTime(date);

  67. cal.add(Calendar.MONTH, n);


  68. return


    cal.getTime();


  69. }



  70. public




    static


    String getLastDayOfMonth(String year, String month)


  71. {

  72. Calendar cal = Calendar.getInstance();


  73. // 年




  74. cal.set(Calendar.YEAR, Integer.parseInt(year));


  75. // 月,因为Calendar里的月是从0开始,所以要-1





  76. // cal.set(Calendar.MONTH, Integer.parseInt(month) – 1);





  77. // 日,设为一号




  78. cal.set(Calendar.DATE,

    1


    );



  79. // 月份加一,得到下个月的一号




  80. cal.add(Calendar.MONTH,

    1


    );



  81. // 下一个月减一为本月最后一天




  82. cal.add(Calendar.DATE, –

    1


    );



  83. return


    String.valueOf(cal.get(Calendar.DAY_OF_MONTH));


    // 获得月末是几号




  84. }



  85. public




    static


    Date getDate(String year, String month, String day)



  86. throws


    ParseException


  87. {

  88. String result = year +

    “- ”




  89. + (month.length() ==

    1


    ? (


    “0 ”


    + month) : month) +


    “- ”




  90. + (day.length() ==

    1


    ? (


    “0 ”


    + day) : day);



  91. return


    parse(result);


  92. }

  93. }

Date—>String



  1. String sdate;


  2. Date ddate;

  3. ……

  4. sdate=(

    new


    SimpleDateFormat(


    “yyyy-MM-dd”


    )).format(ddate);

SimpleDateFormat函数语法:

G 年代标志符

y 年

M 月

d 日

h 时 在上午或下午 (1~12)

H 时 在一天中 (0~23)

m 分

s 秒

S 毫秒

E 星期

D 一年中的第几天

F 一月中第几个星期几

w 一年中第几个星期

W 一月中第几个星期

a 上午 / 下午 标记符

k 时 在一天中 (1~24)

K 时 在上午或下午 (0~11)

z 时区

常见标准的写法”yyyy-MM-dd HH:mm:ss”,注意大小写,时间是24小时制,24小时制转换成12小时制只需将HH改成hh,不需要另外的函数。

1:大体思路



  1. 这种转换要用到java.text.SimpleDateFormat类



  2. 字符串转换成日期类型:

  3. 方法1:


  4. 也是最简单的方法 Date

    date


    =


    new


    Date(“2008-04-14”);



  5. 方法2:


  6. SimpleDateFormat

    sdf


    =


    new


    SimpleDateFormat(“yyyy-MM-dd”);//小写的mm表示的是分钟


  7. String

    dstr


    =


    “2008-4-24”


    ;


  8. java.util.Date

    date


    =


    sdf


    .parse(dstr);





  9. 日期转换成字符串:


  10. SimpleDateFormat

    sdf


    =


    new


    SimpleDateFormat(“yyyy-MM-dd”);


  11. java.util.Date

    date


    =


    new


    java.util.Date();


  12. String

    str


    =


    sdf


    .format(date);

2:程序实例



  1. package test;


  2. import java.text.DateFormat;

  3. import java.text.SimpleDateFormat;

  4. import java.text.ParseException;

  5. import java.util.Date;

  6. public class StringOrDate {

  7. public static String dateToString(Date date, String type) {

  8. String

    str


    =


    null


    ;


  9. DateFormat

    format


    =


    new


    SimpleDateFormat(“yyyy-MM-dd”);


  10. if (type.equals(“SHORT”)) {

  11. // 07-1-18


  12. format


    =


    DateFormat


    .getDateInstance(DateFormat.SHORT);



  13. str


    =


    format


    .format(date);


  14. } else if (type.equals(“MEDIUM”)) {

  15. // 2007-1-18


  16. format


    =


    DateFormat


    .getDateInstance(DateFormat.MEDIUM);



  17. str


    =


    format


    .format(date);


  18. } else if (type.equals(“FULL”)) {

  19. // 2007年1月18日 星期四


  20. format


    =


    DateFormat


    .getDateInstance(DateFormat.FULL);



  21. str


    =


    format


    .format(date);


  22. }

  23. return str;

  24. }

  25. public static Date stringToDate(String str) {

  26. DateFormat

    format


    =


    new


    SimpleDateFormat(“yyyy-MM-dd”);


  27. Date

    date


    =


    null


    ;


  28. try {

  29. // Fri Feb 24 00:00:00 CST 2012


  30. date


    =


    format


    .parse(str);


  31. } catch (ParseException e) {

  32. e.printStackTrace();

  33. }

  34. // 2012-02-24


  35. date


    =


    java


    .sql.Date.valueOf(str);



  36. return date;

  37. }

  38. public static void main(String[] args) {

  39. Date

    date


    =


    new


    Date();


  40. System.out.println(StringOrDate.dateToString(date, “MEDIUM”));

  41. String

    str


    =


    “2012-2-24”


    ;


  42. System.out.println(StringOrDate.stringToDate(str));

  43. }