您的位置:首页 > 其它

SimpleDateFormat使用详解

2014-02-15 22:54 447 查看
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");
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: