1 SimpleDateFormat担当重任,怎样格式化都行
import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo {
public static void main(String[] args) {
Date now=new Date();
SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");
System.out.println(f.format(now));
f=new SimpleDateFormat("a hh点mm分ss秒");
System.out.println(f.format(now));
}
2 从字符串到日期类型的转换:
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
public class Demo {
public static void main(String[] args) {
String strDate="2005年04月22日";
//注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 ");
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
//必须捕获异常
try {
Date date=simpleDateFormat.parse(strDate);
System.out.println(date);
} catch(ParseException px) {
px.printStackTrace();
}
3 将毫秒数换转成日期类型
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.text.*;
public class Demo {
public static void main(String[] args) {
long now=System.currentTimeMillis();
System.out.println("毫秒数:"+now);
Date dNow=new Date(now);
System.out.println("日期类型:"+dNow);
}
4 获取系统时期和时间,转换成SQL格式后更新到数据库
java.util.Date d=new java.util.Date(); //获取当前系统的时间
//格式化日期
new java.text.SimpleDateFormat s= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = s.format(d); //转为字符串
5 比较日期大小
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class test {
public static void main(String args[]) {
int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");
System.out.println("i=="+i);
public static int compare_date(String DATE1, String DATE2) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() > dt2.getTime()) {
System.out.println("dt1 在dt2前");
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
System.out.println("dt1在dt2后");
return -1;
} else {
return 0;
} catch (Exception exception) {
exception.printStackTrace();
return 0;
}
java 日期和字符串转换
文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进来!用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss,为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小时制,而hh是12小时制。
1.字符串转日期
2017-12-08 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2017-12-08 19:20:00 " );
2.日期转字符串
假如把今天的日期转成字符串可用 String str = sdf.format(new Date());这个字符串内容的格式类似2017-12-08 19:20:00。透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2017年7月10日,我们可以这么写:
SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " );
String str = sdf.format(new Date());
str便会依照我们设定的格式输出了。
附编写好的一个简单实例:
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class ConvertDemo {
* 日期转换成字符串
* @param date
* @return str
public static String DateToStr(Date date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = format.format(date);
return str;
}
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
* 字符串转换成日期
* @param str
* @return date
public static Date StrToDate(String str) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = format.parse(str);
} catch (ParseException e) {
e.printStackTrace();
return date;
public static void main(String[] args) {
Date date = new Date();
System.out.println("日期转字符串:" + ConvertDemo.DateToStr(date));
System.out.println("字符串转日期:" + ConvertDemo.StrToDate(ConvertDemo.DateToStr(date)));
}
下面的都是例子
Java中日期格式转换
/**
* 字符串转换为java.util.Date<br>
* 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2017-12-12 AD at 22:10:59 PSD'<br>
* yy/MM/dd HH:mm:ss 如 '2017/12/12 17:55:00'<br>
* yy/MM/dd HH:mm:ss pm 如 '2017/12/12 17:55:00 pm'<br>
* yy-MM-dd HH:mm:ss 如 '2017-12-12 17:55:00' <br>
* yy-MM-dd HH:mm:ss am 如 '2017-12-12 17:55:00 am' <br>
* @param time String 字符串<br>
* @return Date 日期<br>
public static Date stringToDate(String time){
SimpleDateFormat formatter;
int tempPos=time.indexOf("AD");
time=time.trim() ;
formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");
if(tempPos>-1){
time=time.substring(0,tempPos)+"公元"+time.substring(tempPos+"AD".length());//china
formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z");
tempPos=time.indexOf("-");
if(tempPos>-1&&(time.indexOf(" ")<0)){
formatter = new SimpleDateFormat ("yyyyMMddHHmmssZ");
} else if((time.indexOf("/")>-1) &&(time.indexOf(" ")>-1)){
formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss");
} else if((time.indexOf("-")>-1) &&(time.indexOf(" ")>-1)){
formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
} else if((time.indexOf("/")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){
formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");
} else if((time.indexOf("-")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){
formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a");
ParsePosition pos = new ParsePosition(0);
java.util.Date ctime = formatter.parse(time, pos);
return ctime;
}
常用日期问题集锦
1、获取服务器端当前日期:
2、获取当前年、月、日:
<% Date myDate = new Date(); int thisYear = myDate.getYear() + 1900;//thisYear = 2003 int thisMonth = myDate.getMonth() + 1;//thisMonth = 5 int thisDate = myDate.getDate();//thisDate = 30 %>
3、按本地时区输出当前日期
4、获取数据库中字段名为”publish_time“、类型为Datetime的值 <%@ page import="java.util.Date"%> <% ...连接数据库...
5、按照指定格式打印日期
SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); out.println("It is " + formatter.format(dNow)); %>
输出的结果为: It is 星期五 2003.05.30 at 11:30:46 上午 CST
6、将字符串转换为日期 <%@ page import="java.util.Date"%> <%@ page import="java.text.DateFormat"%> <% String input = "1222-11-11"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date t = null; try{ t = formatter.parse(input); out.println(t); }catch(ParseException e){ out.println("unparseable using " + formatter); } %> 输出结果为:
7、计算日期之间的间隔
Date d2 = new Date();
long diff = d2.getTime() - d1.getTime(); out.println("Difference is " + (diff/(1000*60*60*24)) + " days."); %> 输出结果为:
8、日期的加减运算方法:用Calendar类的add()方法 <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <% Calendar now = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz"); out.println("It is now " + formatter.format(now.getTime())); now.add(Calendar.DAY_OF_YEAR,-(365*2)); out.println("<br>"); out.println("Two years ago was " + formatter.format(now.getTime())); %> 输出结果为: It is now 星期五 2003.05.30 at 01:45:32 下午 CST Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST
9、比较日期方法:用equals()、before()、after()方法
String relation = null; if(d1.equals(d2)) relation = "the same date as"; else if(d1.before(d2)) relation = "before"; else relation = "after"; out.println(d1 +" is " + relation + ' ' + d2); %> 输出结果为:
10、记录一件事所花费的时间方法:调用两次System.getTimeMillis()方法,求差值
输出结果为:
其它:如何格式化小数
<%@ page import="java.text.*"%> <% DecimalFormat df = new DecimalFormat(",###.00"); double aNumber = 33665448856.6568975; String result = df.format(aNumber); out.println(result); %>
输出结果为:
小例1:把Int整数转换成Date
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Text {
public static void main(String[] args){
SimpleDateFormat dd=new SimpleDateFormat("yyyyMMdd");
String d=dd.format(new Date());
System.out.print(d);
int ddd=20071212;
try {
Date date=dd.parse(ddd);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
小例2:如何获得系统的year,month,day?
Calendar c = Calendar.getInstance();
c.setTime(new java.util.Date());
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int day = c.get(Calendar.DAY_OF_MONTH);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
小例3: JAVA中获得本地系统时间的方法
import java.util.*;
public class D {
public static void main(String []abc) {
int y,m,d,h,mi,s;
Calendar cal=Calendar.getInstance();
y=cal.get(Calendar.YEAR);
m=cal.get(Calendar.MONTH);
d=cal.get(Calendar.DATE);
h=cal.get(Calendar.HOUR_OF_DAY);
mi=cal.get(Calendar.MINUTE);
s=cal.get(Calendar.SECOND);
System.out.println("现在时刻是"+y+"年"+m+"月"+d+"日"+h+"时"+mi+"分"+s+"秒");
###########################################################
public class Main {
public static void main(String[] args) {
java.util.Calendar c=java.util.Calendar.getInstance();
java.text.SimpleDateFormat f=new java.text.SimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒");
System.out.println(f.format(c.getTime()));
}
小例6: 在JSP页面上可以通过一下方法获取:
function printDate() {
var today=new Date();
var day=today.getDate();
var month=today.getMonth()+1;
var year=today.getFullYear().toString();
var box1=document.stats.intoDate;
if((month/10)<1) {
month=("0"+month).toString();
if((day/10)<1) {
day=("0"+today.getDate()).toString();
box1.value=year+"-"+month+"-"+day;