常见的关于日期的问题
与之有关的类(详细信息查看API文档)
它们之间的关系:
Calendar类为扩充Date类而产生。
java.sql.Date、Time、Timestamp类用于处理数据库的日期,继承于java.util.Date.
java.sql.Date只有年月日;java.sql.Time只有时分秒;java.sql.Timestamp全部含有。
实例代码:
package com.java;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
/**
* 1.如何获取当前日期
* 2.如何对日期进行格式化
* 3.如何将一个字符串转化为日期
* 4.如何处理来自数据库的时间请见“JDBC日期处理”
* */
public class TestDateAndTime {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
System.out.println("格式化的Date:" + sdf.format(d));
Calendar c = Calendar.getInstance();
c.setTime(d); // 使用给定的 Date 设置此 Calendar 的时间
System.out.println("Calendar:" + c.get(Calendar.YEAR) + "年"
+ (c.get(Calendar.MONTH) + 1) + "月");
System.out.println("Calendar.getTime():" + c.getTime());
long s = System.currentTimeMillis(); // 当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
System.out.println("格式化的System.currentTimeMillis():" + sdf.format(s));
System.out.println();
String st = "2017-01-23 12:30:50.0";// 不是此格式可用正则表达式转为此格式
Timestamp ts = Timestamp.valueOf(st);// 使用Timestamp.valueOf()方法对字符串进行转换
System.out.println("字符串表示的时间:" + ts);
Calendar cJapan = new GregorianCalendar(TimeZone.getTimeZone("Japan"));// 获取指定时区的格林威治日历
System.out.println("日本时区的格林威治时间(小时):"
+ cJapan.get(Calendar.HOUR_OF_DAY));
}
}
/*
结果:
格式化的Date:2017年10月23日21时33分27秒
Calendar:2017年10月
Calendar.getTime():Mon Oct 23 21:33:27 CST 2017
格式化的System.currentTimeMillis():2017年10月23日21时33分27秒
字符串表示的时间:2017-01-23 12:30:50.0
日本时区的格林威治时间(小时):22
*/