JAVA时间相关内容:Date、SimpleDateFormat和timestamp

Date API:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

SimpleDateFormat API: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
DateFormatSymbols API: https://docs.oracle.com/javase/8/docs/api/java/text/DateFormatSymbols.html


1. 根据Date类对象获取timestamp

设Date对象为date, date.getTime()即可获得timestamp;

API如下:

示例如下:

public static void main(String[] args) throws ParseException {
		System.out.println("timestamps = " + new Date().getTime());
	}

输出如下:


2. 由timestamp获得Date类对象date

    Date类的构造方法可直接以timestamp为参数构造,

API如下:


示例如下:

	public static void main(String[] args) throws ParseException {
		long timestamp = System.currentTimeMillis();
		System.out.println("timestamp = " + timestamp);
		System.out.println(new Date(timestamp));
	}

输出如下:


3. 获取指定时间的Date类变量date

    通过String类型strDate指定日期,然后通过SimpleDateFormat的parse方法解析得到Date类型变量date。代码如下:

public static void main(String[] args) throws ParseException {
		String strDate = "2018-01-01 00:00:00.000";
		String pat1 = "yyyy-MM-dd HH:mm:ss.SSS";
		SimpleDateFormat sdf = new SimpleDateFormat(pat1);
		Date date = sdf.parse(strDate);
		System.out.println(date);
	}
输出如下:


4. 由Date类型变量获得指定格式的String类型时间

    通过SimpleDateFormat,可以讲Date类型变量date解析为指定格式的String类型。

public static void main(String[] args) throws ParseException {
		Date date = new Date();
		String pat1 = "yyyy-MM-dd HH:mm:ss.SSS";  // 保留全部数据
		String pat2 = "MM-dd HH:mm";  // 只保留日期和时分
		SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
		SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
		System.out.println("raw date format: " + date.toString());
		System.out.println("pattern1: " + sdf1.format(date));
		System.out.println("pattern2: " + sdf2.format(date));
	}

输出如下:


SimpleDateFormat的API参考文首ref,日期格式化模板例子如下:



5. 如何由String类strDate = date.toString() 如(“Mon Apr 30 10:32:03 CST 2018”)获得Date对象

    1)method1(已经废弃): Date类的构造方法,通过date = new Date(strDate)

    

示例如下:

	public static void main(String[] args) throws ParseException {
		Date date1 = new Date();
		String strDate = date1.toString();
		System.out.println("strDate is: " + strDate);
		Date date2 = new Date(strDate);
		System.out.println("constructed date2 is: " + date2.toString());
	}
输出如下:

    2)method2:由SimpleDateFormat解析strDate获得Date对象date

    

public static void main(String[] args) throws ParseException {
		Date date1 = new Date();
		String strDate = date1.toString();
		System.out.println("raw strDate = " + strDate);
		String pat = "E MMM dd HH:mm:ss zzz yyyy";
		// 为sdf设置语言环境为English,因为默认情况下是中文语言环境
		SimpleDateFormat sdf = new SimpleDateFormat(pat, Locale.ENGLISH);
		// parse and get date2
		Date date2 = sdf.parse(strDate);
		System.out.println("after parsing, date2 = " + date2);
	}

输出如下:

    3)补充说明:

    构造SimpleDateFormat时如果没有指定Locale为English,则默认locale为本地环境Chinese,此时sdf的解析会获得中文字符,例子如下:

public static void main(String[] args) throws ParseException {
		Date date1 = new Date();
		String strDate = date1.toString();
		System.out.println("raw strDate = " + strDate);
		String pat = "E MMM dd HH:mm:ss zzz yyyy";
		SimpleDateFormat sdf = new SimpleDateFormat(pat);
		// with default locale--chinese, and default DateFormatSymbols
		System.out.println(sdf.format(date1));
	}
输出如下:



6.  DateFormatSymbols类讲解 

DateFormatSymbols 是一个公共类,用于封装可本地化的日期-时间格式化数据,如月名、星期几的名称和时区数据。DateFormat 和 SimpleDateFormat 都使用 DateFormatSymbols 来封装此信息。

	public static void main(String[] args) throws IOException {
		// 默认locale下封装的“月”
		DateFormatSymbols dfsDefault = new DateFormatSymbols();
		String[] monthsDefault = dfsDefault.getMonths();
		System.out.println(Arrays.toString(monthsDefault));
		// locale为ENG情况下封装的“月”
		DateFormatSymbols dfsENG = new DateFormatSymbols(Locale.ENGLISH);
		String[] monthsENG = dfsENG.getMonths();
		System.out.println(Arrays.toString(monthsENG));

	}

输出:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值