java Date处理和类型转换

              做了一段时间的Java开发,总感觉日期的处理有点吃力,抽了个时间把自己用过的处理方法贴出来,有空就可以看看了,也不用因为积分不够而没有下载资源。呵呵,有错误的地方当然希望大家帮我指出来,谢谢

package com.wyebd.date;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.Formatter;

public class DateTest {
 //获取当前系统时间system.currentTimeMillis()是long型,转换Date
 public static String getDates(long millis){
  Calendar cal = Calendar.getInstance();
  cal.setTimeInMillis(millis);
  Formatter ft = new Formatter(java.util.Locale.CHINA);
  return ft.format("%1$tY年%1$tm月%1$td日%1$tT %1$tA %1$tp", cal).toString();
 }
 //根据日期 传参获取相应日期
 public static String getSpecifiedDayAfter(String dates,int n){
  Calendar c=Calendar.getInstance();
  Date date;
  try {
   date = new java.text.SimpleDateFormat("yyyy年MM月dd日").parse(dates);
   c.setTime(date);
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  int day = c.get(Calendar.DATE);
  c.set(Calendar.DATE, day+n);
  String dayAfter = new java.text.SimpleDateFormat("yyyy年MM月dd日").format(c.getTime());
  return dayAfter;
 }
 //日期转换周几
 public static String parseDate(String theDate){
  String strReturn="";
  java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy年MM月dd日");
  try {
   Date date = sdf.parse(theDate);
   java.text.SimpleDateFormat sdf1 = new java.text.SimpleDateFormat("EEEE");
   strReturn=sdf1.format(date);
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } 
  return strReturn;
 }
 /**
     * 时间str to date,date to str
     * Bing
     */
    public static String strTodate(String dTime) throws Exception{
     dTime="2013-6-15 15:30:00";
     java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  Date date1 = sdf.parse(dTime);//str to date
  dTime=getSpecifiedDayAfter(sdf.format(date1),-3);// 指定日期前一天 sdf.format(date1) date to str
  /*dTime=getSpecifiedDayAfter(sdf.format(date1));// 指定日期后一天 sdf.format(date1) date to str*/
//  System.out.println(beginTim+"--------before-|-----|-end----------"+endTim);
  return dTime;
 } 
    /**
     * 时间long to date,date to long
     * Bing
     */
    public static String longTodate(String dTime) throws Exception{
     dTime="2013-6-15 15:30:00";
     java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      long timeStart=sdf.parse("2011-09-20 12:30:45").getTime();
      System.out.println(timeStart);//date to long
      Date date = new Date(timeStart);
      System.out.println(sdf.format(date));//long todate
    return dTime;
    }

 
 
 /**
  * 获取当前系统时间并做一些处理
  * @Auto Bing
  * @param args
  */
 public static void main(String[] args) {
    //java.util.Calendar;
    Calendar cal = Calendar.getInstance();
    String Tim= cal.get(Calendar.YEAR)+"年"+ (cal.get(Calendar.MONTH)+1)+"月"+cal.get(Calendar.DATE)+" "+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
    System.out.println(Tim+"-------------------------------------------------------------------------------------------------------------------");
    //java.text.DateFormat
 Date now =new Date();//获取当前系统时间1
    DateFormat d1 = DateFormat.getDateInstance(); //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53)
       String str1 = d1.format(now);//日期格式 比如:2013-8-2
       String str2=DateFormat.getDateTimeInstance().format(now); //精确到秒
       String str3=DateFormat.getTimeInstance().format(now);//精确到秒
       String str4=DateFormat.getInstance().format(now); //使用SHORT风格显示日期和时间   12小时,分上、下午
       String str5=DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL).format(now);//显示日期,周,时间(精确到秒)
       String str6=DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(now);//显示日期。时间(精确到秒)
       String str7=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(now);//显示日期。时间(精确到分)
       String str8=DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(now);//显示日期。时间(精确到分)与SHORT风格相比,这种方式最好用
       System.out.println("用Date方式显示时间: " + now);//此方法显示的结果和Calendar.getInstance().getTime()一样
       System.out.println("用DateFormat.getDateInstance()格式化时间后为:" + str1);
       System.out.println("用DateFormat.getDateTimeInstance()格式化时间后为:" + str2);
       System.out.println("用DateFormat.getTimeInstance()格式化时间后为:" + str3);
       System.out.println("用DateFormat.getInstance()格式化时间后为:" + str4);
       System.out.println("用DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL)格式化时间后为:" + str5);
       System.out.println("用DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG)格式化时间后为:" + str6);
       System.out.println("用DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT)格式化时间后为:" + str7);
       System.out.println("用DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM)格式化时间后为:" + str8);
       //获取当前系统时间system.currentTimeMillis()
 System.out.println("System.currentMillis()="+getDates(System.currentTimeMillis()));
       //根据SimpleDateFormat将获取到的Date()转换成一般格式
       java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
 System.out.println("SimpleDateFormat将获取到的Date()转换成一般格式:"+sdf.format(now));
       //后一天、后n天  往后推指定天数  0表示当天    负数表示前推
       System.out.println("**********************dayAfter:"+getSpecifiedDayAfter("2013年8月2日",3));//往后推3天
       System.out.println("**********************dayCurrent:"+getSpecifiedDayAfter("2013年8月2日",0));//当天
       System.out.println("**********************dayBefore:"+getSpecifiedDayAfter("2013年8月2日",-3));//往前推推3天
       //指定日期转换周天
       System.out.println("**********************今天是:"+parseDate(getSpecifiedDayAfter("2013年8月2日",0)));//当天
 }


/**类似插件的日期处理

*/

 /**
  * 根据日期 传参获取相应日期
  */
 public static String getSpecifiedDayAfter(String dates,int n) throws ParseException{
    Calendar c=Calendar.getInstance();
    Date date = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(dates);
     c.setTime(date);
    int day = c.get(Calendar.DATE);
    c.set(Calendar.DATE, day+n);
    String dayAfter = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(c.getTime());
    return dayAfter;
 }
 public static void main(String[] args) throws ParseException{
// /**
//  * 网上自定义日历控件
//  */
//   GregorianCalendar d = new GregorianCalendar();
//   int today = d.get(Calendar.DAY_OF_MONTH);
//   int month = d.get(Calendar.MONTH);
//   d.set(Calendar.DAY_OF_MONTH, 1);
//   int weekday = d.get(Calendar.DAY_OF_WEEK);
//   System.out.println("Sun Mon Tue Wed Thu Fri Sat");
//   for(int i=Calendar.SUNDAY; i<weekday; ++i)
//   System.out.print("    ");
//   do
//   {
//   int day = d.get(Calendar.DAY_OF_MONTH);
//   if(day < 10) System.out.print(" ");
//   System.out.print(day);
//   if(day == today)
//   System.out.print("* ");
//   else
//   System.out.print("  ");
//   if(weekday == Calendar.SATURDAY)
//   System.out.println();
//   d.add(Calendar.DAY_OF_MONTH, 1);
//   weekday = d.get(Calendar.DAY_OF_WEEK);
//   }while(d.get(Calendar.MONTH) == month);
//   if(weekday != Calendar.SUNDAY)
//   System.out.println();
//  
// /**
//  *只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式.
//  *你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分. EEEE是星期, MMMM是月,
//  *dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01 
//  */
//   SimpleDateFormat bartDateFormat =
    new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
    new SimpleDateFormat("EEEE-M-d-yyyy");
//    new SimpleDateFormat("yyyy-MM-dd 是 EEEE");
//    Date date = new Date();
//    System.out.println(bartDateFormat.format(date));
//  /**
//   *
//   */
//  SimpleDateFormat sdf=new SimpleDateFormat("EEEE yyyy-MM-dd HH:mm:ss");
//  String dTime=sdf.format(System.currentTimeMillis()+3*1000*60*60*24).toString();//获取系统时间
//  String now=new Date().toLocaleString();
//  String before=new Date(new Date().getTime()-1000*60*60*24).toLocaleString();
//  System.out.println(dTime+"---"+now+"---"+sdf.format(new Date())+"---"+before+"---"+new Date().getDay()+"==="+sdf.parse(dTime).getMonth()+"--相差整天--"+getSpecifiedDayAfter(before,-3));
//  Calendar calendar = Calendar.getInstance();
//       SimpleDateFormat df = new SimpleDateFormat("yyyy-M-d");
//       String s = df.format(calendar.getTime());
//       System.out.println(s);
//       System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1); //Calendar获取周几会提前一天
  DateFormat d1 = DateFormat.getDateTimeInstance();
  System.out.println(d1.format(new Date()));
  
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
  SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
  Date date =new Date();
  String timeCurr = s.format(date);
  String time=sdf.format(date); 
  System.out.println(time+"--"+timeCurr+"==="+String.format("%.0f", Double.parseDouble("100")));//自带String属性方法保留小数位数
 }
 


 
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值