首页 > 代码库 > Date常用转换、比较
Date常用转换、比较
- 在项目开发过程中,遇到了一个需要把本年本月的充值超过1000元的用户都获取出来,但是我数据库时间存的是int类型。所以不知道where的条件语句怎么写,特此查了一下,再此总结一下,希望对需要的朋友能有所帮助。
- 总体思想是获取出来本月初和本月末的时间转化成int在where查询条件为之间的值。
引发出的问题:1) java获取当前系统时间
2)获取月初的月末的时间
3)时间格式转化成int
3. 时间转化用到的两个类 import java.util.Calendar; (日历) import java.text.SimpleDateFormat;(时间格式化)
下面一一解决:
1) java获取当前系统时间,获取值是毫秒数
//方法 一 System.currentTimeMillis(); //方法 二 Calendar.getInstance().getTimeInMillis(); //方法 三 new Date().getTime(); |
2)获取月初的月末的时间:把获取出来的时间进行格式化,形成yyyy-MM格式进行输出,获取出来的值就是本月的月初的时间。因为2017—07转成的int值和2017-07-01 00:00:00 是一样的值。
Long time = System.currentTimeMillis();//获取当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//按照这个格式输出 String date = sdf.format(time);//转换成标准格式进行输出 // parse方法用于将字符串类型的日期/时间解析为Date类型。 String MT = String.valueOf(sdf.parse(date).getTime() / 1000);//月初的时间字符串int值 |
3)获取月末的时间需要用现在的月初的时间加上1 就是下个月的月初的时间int在 – 1秒就是这个月的月末
public static void main(String[] args) { GregorianCalendar gc = new GregorianCalendar(2015, Calendar.MAY, 6);//参数不设置默认是当前时间 gc.add(Calendar.MONTH, 1);//其中可以是月也可以是DATE YEAR System.out.println(gc.getTime());//Sat Jun 06 00:00:00 CST 2015 运行结果 } |
Calendar gc = Calendar.getInstance();//获取时间 //gc.set(Calendar.MONTH, 1);//设置月份 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");//格式输出 String date= sdf.format(gc.getTime()); System.out.println(date);//输出为2017-07 try { String aft= String.valueOf(sdf.parse(date).getTime() / 1000); System.out.println(aft);//输出为1498838400,再减去1就是上个月末 } catch (Exception e) { } |
参考网址:http://www.jb51.net/article/76920.htm(运算比较)
http://tangmingjie2009.iteye.com/blog/1543166(各种获取时间的速度)
http://darkmasky.iteye.com/blog/829302 (时间与long的转换 )
Date常用转换、比较