Java 格式化输出日期

GMT:Greenwich Mean Time,格林威治标准时间
// 例1:根据1970-1-1到某个时间点经过的毫秒数,推出具体时间点 // 1.创建Calendar对象,根据毫秒数设置对象的时间 Calendar c = Calendar.getInstance(); c.setTimeInMillis(46800999); // 2.创建SimpleDateFormat对象,指定格式 时:分:秒 DateFormat df = new SimpleDateFormat("HH:mm:ss"); // 3.设置时区,GMT表示0时区 df.setTimeZone(TimeZone.getTimeZone("GMT")); // 4.格式化时间 System.out.println(df.format(c.getTime())); // 例2:根据某个字符串得到指定格式的日期 String str = "2011-01-18 00:00:00.0"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date date = df.parse(str); String newstr = df.format(date);

// 获取所有可用的时区 String[] zones = TimeZone.getAvailableIDs(); // 模式字母 yyear Mmonth in year dday in month Dday in year Hhour in day(0-23) hhour in day(1-12) mminute in hour ssecond in minute Smillisecond

注意!创建 Calendar 类对象并设置了时区后,使用 Calendar.getTime() 方法返回的是一个 java.util.Date 对象,这个 Date 对象并不会使用 Calendar 对象的时区,而是使用当前系统的时区;
SimpleDateFormat 和 DateTimeFormatter 的区别
  1. 【Java 格式化输出日期】创建对象的方式:
    • SimpleDateFormat 通过 new 来创建对象,它是线程不安全的,因此在多线程程序中,每次使用 SimpleDateFormat 时都要创建一个实例;
    • DateTimeFormatter 通过 ofPattern 方法创建对象,它是线程安全的,因此在多线程程序中不用每次使用都创建一个实例;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");

  1. parse 方法:
    • SimpleDateFormat 的 parse 方法将 String 转为 Date
    • DateTimeFormatter 的 parse 方法将 String 转为 Temporal Accessor
  2. format 方法:
    • SimpleDateFormat 的 format 方法将 Date 转为 String
    • DateTimeFormatter 的 format 方法将 Temporal Accessor 转为 String
参考资料:
https://linuxtut.com/en/935f4...

    推荐阅读