SimpleDateFormat使用详解

简介: package cc.testsimpledateformat;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;import android.app.Activity;import android.os.Bundle;/** * SimpleDateFormat * 一个与语言环境相关的格式化日期和分析日期的工具类。


package cc.testsimpledateformat;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.app.Activity;
import android.os.Bundle;
/**
 * SimpleDateFormat
 * 一个与语言环境相关的格式化日期和分析日期的工具类。
 * 利用该类可以将日期转换成文本,或者将文本转换成日期。
 * 
 * 在使用SimpleDateFormat时需要指定一个需要的格式(pattern)来格式日期(Date).
 * 在此请注意几个字母大小写的差异:
 * 
 * 大写的H为24小时制表示一天中的小时数(0-23)
 * 小写的h为12小时制表示一天中的小时数(1-12)
 * 
 * 大写的M表示年中的月份 
 * 小写的m表示小时中的分钟数 
 * 
 * 大写的S表示毫秒数
 * 小写的s表示秒数
 * 
 * 所以最常用的24小时制的具体日期的pattern为:
 * yyyy-MM-dd HH:mm:ss
 * 
 * 
 * SimpleDateFormat中format()方法小结:
 * 1 format()方法的作用是将日期(Date)转换为文本
 * 2 format()方法的输入参数是一个Date
 * 
 * 
 * SimpleDateFormat中parse()方法小结:
 * 1 parse()方法的作用是将文本转换为日期(Date)
 * 2 parse()方法的输入参数是一个文本,比如String
 * 
 * 
 * 原创作者:
 * 谷哥的小弟
 * 
 * 博客地址:
 * http://blog.csdn.net/lfdfhl
 * 
 */
public class MainActivity extends Activity {
	private String time1="2016-01-02 00:00:00";
	private String time2="2013-09-21 00:00:00";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		test1();
		test2();
		test3();
		test4();
		test5();
		getTimeDifference(time1,time2);  
	    compareTime(time1,time2);  
	}
	
	/**
	 * 将日期转换为文本
	 * 
	 */
	private void test1(){
		try {
			Date date=new Date();
			SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
			String time=simpleDateFormat.format(date);
			System.out.println("----> 格式化后的日期为: "+time);
			System.out.println("----------------------------------");
		} catch (Exception e) {
		}
		
	}
	
	/**
	 * 将文本转换为日期
	 * 
	 * 请注意:
	 * 文本的格式应该与SimpleDateFormat中的pattern保持一致,否则导致异常
	 * 比如:
	 * 2008年08月18日 20:07:33   对应于yyyy年MM月dd日 HH:mm:ss
	 * 2008-08-18 20:07:33           对应于yyyy-MM-dd HH:mm:ss
	 */
	private void test2() {
		try {
			String day = "2008年08月18日 20:07:33";
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.getDefault());
			Date date = simpleDateFormat.parse(day);
			System.out.println("----> 格式化后的日期为: "+date);
			
			day = "2008-08-18 20:07:33";
			simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
			date = simpleDateFormat.parse(day);
			System.out.println("----> 格式化后的日期为: "+date);
			
			day = "20131227085009";
			simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault());
			date = simpleDateFormat.parse(day);
			simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
		    String time = simpleDateFormat.format(date);
		    System.out.println("----> 时间文本为: "+time);
			
			System.out.println("----------------------------------");
		} catch (Exception e) {
			System.out.println("----> Exception: "+e.toString());

		}

	}
	
	/**
	 * 将时间戳转换成时间
	 * 
	 */
	private void test3(){
		long timeStamp=System.currentTimeMillis();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); 
		Date date=new Date(timeStamp);
        String time = simpleDateFormat.format(date);  
        System.out.println("----> 将时间戳转换为字符串: "+time);
		System.out.println("----------------------------------");
	}
	
	/**
	 * 将时间转换成时间戳
	 * 
	 */
	private void test4(){
		try {
			long timeStamp=System.currentTimeMillis();
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); 
			Date date=new Date(timeStamp);
	        String time = simpleDateFormat.format(date);  
	        System.out.println("----> 当前时间戳为: "+timeStamp+" ,其字符串为:"+time);
	        
	        Date parsedDate=simpleDateFormat.parse(time);
	        long ts=parsedDate.getTime();
	        System.out.println("----> 将字符串转换为时间戳: "+ts);
			System.out.println("----------------------------------");
			
		} catch (Exception e) {
			
		}
		
	}
	
	/**
	 * java时间戳与unix时间戳的关系
	 * 
	 * java中生成的时间戳精确到毫秒,但unix中精确到秒
	 * 所以两者相差1000倍
	 */
	private void test5(){
		long javaTimeStamp=System.currentTimeMillis();
		long unixTimeStamp=javaTimeStamp/1000;
		System.out.println("----> java时间戳: "+javaTimeStamp+" ,unix时间戳:"+unixTimeStamp);
		System.out.println("----------------------------------");
	}
	
	/**
	 * 计算两个时间的差值 
	 */
    private void getTimeDifference(String time1,String time2) {  
    	SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());  
        try {  
            Date date1 = simpleDateFormat.parse(time1);  
            Date date2 = simpleDateFormat.parse(time2);  
            long difference = date1.getTime() - date2.getTime();  
            long days = difference / (1000 * 60 * 60 * 24);  
            System.out.println("----> 两个时间相距:"+days+"天");
        } catch (Exception e) {  
            System.out.println("----> Exception="+e.toString());
        }  
        System.out.println("----------------------------------");
  
    }
    
    /**
     * 比较两个时间的大小
     */
	private void compareTime(String time1, String time2) {
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
		Calendar calendar1 = java.util.Calendar.getInstance();
		Calendar calendar2 = java.util.Calendar.getInstance();
		try {
			calendar1.setTime(dateFormat.parse(time1));
			calendar2.setTime(dateFormat.parse(time2));
		} catch (java.text.ParseException e) {
			System.out.println("----> Exception=" + e.toString());
		}
		int result = calendar1.compareTo(calendar2);
		if (result == 0){
			System.out.println("----> time1等于time2");
		}else if (result < 0) {
			System.out.println("----> time1小于time2");
		}else {
			System.out.println("----> time1大于time2");
		}

	}  
	
	
	
}


相关文章
|
4月前
|
安全 Java
java系列知识之~SimpleDateFormat日期格式化
这篇文章介绍了Java中`SimpleDateFormat`类的使用,包括如何创建实例、格式化日期对象为字符串、解析字符串为日期对象,并提供了常见日期模式和使用示例,同时指出了`SimpleDateFormat`不是线程安全及其它一些注意事项。
|
5月前
|
存储 安全 Java
使用SimpleDateFormat进行日期格式化
使用SimpleDateFormat进行日期格式化
还在用 SimpleDateFormat 做时间格式化?小心项目崩掉
SimpleDateFormat.parse() 方法的线程安全问题 错误示例 非线程安全原因分析 解决方法
|
Java
LocalDateTime序列化成yyyy-MM-dd HH:mm
LocalDateTime序列化成yyyy-MM-dd HH:mm
249 0
|
缓存 安全 Java
你真的会使用SimpleDateFormat吗?
在日常开发中,我们经常会用到时间,我们有很多办法在Java代码中获取时间。但是不同的方法获取到的时间的格式都不尽相同,这时候就需要一种格式化工具,把时间显示成我们需要的格式。
你真的会使用SimpleDateFormat吗?
使用 SimpleDateFormat 格式化日期
使用 SimpleDateFormat 格式化日期
136 0
|
Java 数据库
SimpleDateFormat 使用
SimpleDateFormat 使用
97 0
|
API
日期时间类(Date、DateFormat、Calendar)
日期时间类(Date、DateFormat、Calendar)
205 1
|
Java
Java格式化时间为yyyy-MM-dd HH:mm:ss
Java格式化时间为yyyy-MM-dd HH:mm:ss
396 0
|
前端开发 Java
Java SimpleDateFormat进行日期格式化
本文目录 1. 为啥要用SimpleDateFormat 2. 日期格式化显示 3. 将字符串转换为对应日期
202 0
Java SimpleDateFormat进行日期格式化