时间技巧总结

来源:互联网 发布:局域网公告软件 编辑:程序博客网 时间:2024/06/13 12:27

时间技巧:包括验证码有效时间的建立,两个时间差(给出了一个时间到零点的思路),使用  after();  before();  或  compareTo(); 比较时间先后,实时获取时间(不建议,页面获取更佳)

希望对你有帮助,祝你有一个好心情,加油!

若有错误、不全、可优化的点,欢迎纠正与补充;转载请注明出处!

import java.awt.BorderLayout;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import javax.swing.BorderFactory;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class test {public static void main(String[] args) throws ParseException{SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   Date startTime = dateFormat.parse("2016-09-01 11:30:00");   Date endTime = dateFormat.parse("2016-09-02 13:33:30"); timeDemo01();//某个时间前后30分钟timeDemo02(startTime, endTime);//两个时间的差/现在时间到今天零点的差timeDemo03(dateFormat, startTime, endTime);//判断两个时间的先后/日期是否在有效期内TimeDemo04 frame = new TimeDemo04();//获取动态时间,建议页面获取,Java写太费事}/** * 获取现在时间前后n分钟的时刻:例这个验证有效时间为30分钟 * @throws ParseException */public static void timeDemo01() throws ParseException{SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");//方法一:获取现在时间30分钟后的时间System.out.println("现在本地时间: " + dateFormat.format(new Date()));//11:33:09//一种获得方法,能省Calendar calendar = Calendar.getInstance();System.out.println("现在本地时间: " + dateFormat.format(calendar.getTime()));//11:33:09calendar.add(Calendar.MINUTE,30);System.out.println("现在本地时间 + 30分钟: " + dateFormat.format(calendar.getTime()));//11:33:09//方法二:获取现在时间30分钟前后的时间,不建议,好学习理解/*String overDate = "00:30:00";long time01 = Long.valueOf(dateFormat.parse(overDate).getTime());System.out.println("30分钟long表示为: " + time01);//-27000000System.out.println("30分钟表示为: " + new Date(time01));//Thu Jan 01 00:30:00 CST 1970System.out.println("查看本地时差(加30分钟):" + new Date(1000*60*30));//Thu Jan 01 08:30:00 CST 1970long time = Long.valueOf(dateFormat.parse(overDate).getTime())+(8*60*60*1000);//时差System.out.println("以本地时间定位,30分钟long表示为: " + time);//1800000System.out.println("以本地时间定位,30分钟表示为: " + new Date(time));//Thu Jan 01 08:30:00 CST 1970System.out.println("本地时间定位: " + new Date(System.currentTimeMillis()));//Sat Sep 03 10:57:16 CST 2016System.out.println("以本地时间定位,30分钟前时间: " + new Date(System.currentTimeMillis()-time));//Sat Sep 03 10:27:16 CST 2016System.out.println("以本地时间定位,30分钟后时间: " + new Date(System.currentTimeMillis()+time));//Sat Sep 03 11:27:16 CST 2016 */}/** * 获取两个时间的差:不是最好,但适合大部分情况,易变通 * 获得现在时间到今天零点的差: * 获得现在时间 * 获得零点时间就是今天时间的 /24*60*60*1000 再乘一次 * 相减就好 * long time01 = ( Long.valueOf(System.currentTimeMillis()) / (24*60*60*1000)) * 24*60*60*1000;System.out.println( new Date(time01));//当天零点(有时差)看timeDemo01里的方法二System.out.println( new Date());//现在时间 * @throws ParseException */public static void timeDemo02(Date startTime, Date endTime) throws ParseException{   long targetTime = (endTime.getTime()-startTime.getTime())/1000;//转换秒为单位long day = targetTime / ( 24 * 3600 );   long hour= targetTime % ( 24 * 3600 ) / 3600;   long minute = targetTime % 3600 / 60;   long second = targetTime % 60 / 60;   System.out.println("需要获得的目标时间为:" + day + "天" + hour + "小时" + minute + "分" + second + "秒" );  }/** * 判断时间 travelDate 是否在有效期内 * @param dateFormat 传入的日期格式 * @param startDate 有效开始日期 * @param endDate 有效截止日期 * @throws ParseException */public static void timeDemo03(SimpleDateFormat dateFormat, Date startDate, Date endDate) throws ParseException{Date travelDate = dateFormat.parse("2016-09-02 13:33:00");//包括等于的情况,after()与before()不包括等于if(travelDate.compareTo(startDate) >= 0 && travelDate.compareTo(endDate) <= 0){//if(travelDate.after(startDate) && travelDate.before(endDate)){System.out.println("时间  travelDate: " + travelDate + "在 startDate: " + startDate + "与" + " endDate: " + endDate + "内,在要求时间内。");}}}class TimeDemo04 extends JFrame{JTextField jTextField01 ;public TimeDemo04(){this.setTitle("Test");this.setSize(500, 500);JPanel jpanel = new JPanel();jpanel.setLayout(new BorderLayout());JTextField jTextField02 = new JTextField();jTextField01 = new JTextField(" yyyy-MM-dd HH:mm:ss ");jTextField02.setBorder(BorderFactory.createLoweredBevelBorder());jTextField01.setBorder(BorderFactory.createLoweredBevelBorder());jTextField01.setHorizontalAlignment(JTextField.RIGHT);jTextField02.setEditable(false);jTextField01.setEditable(false);jpanel.add(jTextField02);jpanel.add(jTextField01,BorderLayout.EAST);jpanel.setBorder(BorderFactory.createEtchedBorder());this.add(jpanel,BorderLayout.SOUTH);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Timer t = new Timer();t.schedule(new TimeDemo05(), 1000,1000);}class TimeDemo05 extends TimerTask{@Overridepublic void run() {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dynamicTime = dateFormat.format(new Date());jTextField01.setText(dynamicTime);}}}
备注:增加一个时间格式的描述
import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;/** * 工作中遇到时间转换格式问题:时间转换为美英格式 * @author ChengFengXiaoZhan */public class TimeTest {public static void main(String[] args) {/* * 英文日期分英式和美式,如下: *  1) 8th March,2009 或8 March,2009(英式) *  2) March 8th,2009 或March 8,2009 (美式) * 日期写法宜遵从下列规则:  * 1)年份必须完全写明,不可用"09代替2009;  * 2)月份必须用英文拼出或采用公认的简写,即 January (Jan.),February (Feb.),March(Mar.),April(Apr.),May,June,July,August (Aug.),September (Sept.),October(Oct.),November(Nov.),December(Dec.);  * 3)日期可用序数词,如:1st,2nd,3rd,4th,...;也可用基数词,如:1,2,3,4,...。但美式大多采用后者;  * 4)在年份和月日之间必须用逗号隔开;  * 5)日期不可全部采用如7.12.2003或7/12/2003的阿拉伯数字书写,否则会引起误解。因为英美在这方面的习惯用法不同。按美国人习惯,上述日期为2003年7月12日,而按英国习惯则是2003年12月7日。 * 注:英文日期分英式和美式,请自行选择格式 */Date date = new Date();DateFormat df1 = new SimpleDateFormat("MMM-dd'th', yyyy",Locale.ENGLISH);SimpleDateFormat sdf1 = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.UK);SimpleDateFormat sdf2 = new SimpleDateFormat("dd MMM,yyyy", Locale.UK);SimpleDateFormat sdf3 = new SimpleDateFormat("dd'th' MMM,yyyy", Locale.UK);System.out.println(df1.format(date));System.out.println(sdf1.format(date));System.out.println(sdf2.format(date));System.out.println(sdf3.format(date));}}
加油!
2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上火车前票丢了怎么办 减肥期吃了汉堡怎么办 寿司店鳗鱼有刺怎么办 吃泡面胃难受该怎么办 吃上火的东西脸上长痘痘怎么办 减肥期间吃撑了怎么办 喝了变质的牛奶怎么办 绿豆糕吃多了会怎么办 小孩抓米饭烫了手怎么办 减肥不来月经了怎么办 吃了馊了的米饭怎么办 饭在冰箱里硬了怎么办 剩米饭反潮了怎么办 吃馊米饭中毒后怎么办? 蒸熟的米饭发黄怎么办 孕妇肉类吃的少怎么办 大米饭坏了吃了怎么办 米饭煮糊了锅怎么办 减肥吃了猪肉脯怎么办 吃了硬米饭胃痛怎么办 宝宝吃了硬物怎么办 米饭卡在喉咙里了怎么办 喉咙里卡了米饭怎么办 孕妇吃了坏鹅蛋怎么办 1岁大宝宝长短腿怎么办 行测中的判断推理怎么办 塑料盖子玻璃罐头瓶子打不开怎么办 猪肉烫火锅吃怎么办料 自制腊肠放干了怎么办 孕妇吃了4块腊肉怎么办 衣服沾了火锅味怎么办 皮包上有火锅味怎么办 芝士年糕裂开了怎么办 制作牛肉酱咸了怎么办 腌牛肉太咸了怎么办 八宝粥的拉环断了怎么办 八宝粥易拉罐拉环断了怎么办 吃完辣的胃难受怎么办 天天呆在家很烦怎么办 吃多了荔枝上火怎么办 猛犸牙牌子裂了怎么办