Date date = new Date()
GregorianCalendar gc = new GregorianCalendar()
gc.set(Calendar.YEAR,2013)//设置年
gc.set(Calendar.MONTH, 8)//这里0是1月..以此向后推
gc.set(Calendar.DAY_OF_MONTH, 29)//设置天
gc.set(Calendar.HOUR_OF_DAY,5)//设置小时
gc.set(Calendar.MINUTE, 7)//设置分
gc.set(Calendar.SECOND, 6)//设置秒
gc.set(Calendar.MILLISECOND,200)//设置毫秒
date = gc.getTime()
System.out.println(new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒SSS毫秒").format(date))
}
第一个问题:这有好几种做法都可以实现:
1.new一个java.util.Date对象,调用它的setYear、setMonth等等方法,设置你要的年月日。不过这种做法不推荐,因为setYear等方法已经过时了。
2.new一个java.util.SimpleDateFormat类的实例,构造方法可以指定日期格式,例如yyyy-MM-dd,其中yyyy表示四位年份,MM表示两位月份,dd表示两位日期。然后通过调用这个SimpleDateFormat实例的parse方法可以解析获得指定日期的Date对象。
代码示例:
SimpleDateFormat
sdf
=
new
SimpleDateFormat("yyyy-MM-dd")
Date
d
=
sdf.parse("2014-03-02")
3.通过java.util.Calendar类的静态方法getInstance()获得一个日历类实例,然后调用此实例的set(int
year,
int
month,
int
date)
设置日历字段
YEAR、MONTH
和
DAY_OF_MONTH
的值,然后调用实例的getTime()方法可以获得指定日期的Date对象
第二个问题:
参考上一个问题的第3种做法,Calendar.getInstance()获得的是当前时刻的日历实例对象,调用此实例对象的setLenient(false)设置日历解释为宽松模式,然后再通过roll(int
field,
boolean
up)方法在给定的时间字段上添加或减去(上/下)单个时间单元(例如你要的“一个月”时间单月),最后通过getTime()方法获得Date对象。
这两个问题都是很简单的,你找份JDK
API文档看看就可以找到办法了,自己多看多想会更好。
以mysql为例,有个字段是timestamp或者datatime类型。1、可以直接在java中直接new java.lang.util.Date()
2、获取到一个时间类型的字符串,然后利用SimpleDateFormat中的parse方法将时间字符串解析成一个Date对象。
现在比较流行的框架都是可以直接插入Date类型的数据,只要与数据库中的映射一致即可。
如mybatis,如下:
<resultMap id="BaseResultMap" type="com.test.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="insert_time" property="insertTime" jdbcType="TIMESTAMP" />
</resultMap>
只要User中的属性insertTime是一个标准格式的java.lang.util.Date类型,然后调用mybatis的insert方法即可插入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)