时间技巧总结
来源:互联网 发布:局域网公告软件 编辑:程序博客网 时间: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
- 时间技巧总结
- 技巧总结
- 技巧总结
- PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
- 十个时间管理技巧
- 十个时间管理技巧
- 时间管理的技巧
- 十个时间管理技巧
- 节约时间的技巧
- 时间、日期格式化技巧
- js 时间 小技巧
- 【技巧】各国时间显示
- excel时间戳转时间技巧
- 简单的时间管理技巧
- 防止浪费时间的技巧
- SQL数据库时间获取技巧
- Javascript技巧大集合时间
- 时间管理的小技巧
- Git几个常用命令
- root用户连接mysql数据库出错 1045 access denied for user 'root'@'localhost' using password yes
- 把基于C51的温度采集程序移植到STM32上
- js的DOM对象的应用--省市联动
- HDU 2064 汉诺塔3
- 时间技巧总结
- 基于MFC+WinpCap构造ARP请求发送包
- linux纯系统下配置PPPOE拨号上网!!!
- Java transient 关键字
- JAVA中的流程控制 if switch
- Oracle expdp/impdp工具使用
- 浏览器开发工具的秘密
- HTML+CSS学习笔记 (七)
- Java———Annotation注解(一)*