//得到long类型当前时间
long l = System.currentTimeMillis()
//new日期对
Date date = new Date(l)
//转换提日期输出格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-
dd HH:mm:ss")System.out.println(dateFormat.format(date))
扩展资料
package com.ob
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
public class DateTest {
public static void main(String[] args) throws ParseException {
Calendar now = Calendar.getInstance()
System.out.println("年: " + now.get(Calendar.YEAR))
System.out.println("月: " + (now.get(Calendar.MONTH) + 1) + "")
System.out.println("日: " + now.get(Calendar.DAY_OF_MONTH))
System.out.println("时: " + now.get(Calendar.HOUR_OF_DAY))
System.out.println("分: " + now.get(Calendar.MINUTE))
System.out.println("秒: " + now.get(Calendar.SECOND))
System.out.println("当前时间毫秒数:" + now.getTimeInMillis())
System.out.println(now.getTime())
\t\tDate d = new Date()
System.out.println(d)
\t\tSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
\t\tString dateNowStr = sdf.format(d)
System.out.println("格式化后的日期:" + dateNowStr)
\t\t
\t\tString str = "2012-1-13 17:26:33"
//要跟上面sdf定义的格式一样
\t\tDate today = sdf.parse(str)
System.out.println("字符串转成日期:" + today)
\t}
}
参考资料:Java - 百度百科
三种情况1.java下使用new date()获取的时间会和真实的本地时间相差8小时。
2.本地获取的时间没有错,存入数据库的时候时间相差8小时。
3.数据库时间没有错,获取到了后端,之后返回给前端相差8小时。
原因:
1.new date()调用的是jvm时间,而jvm使用的时间默认是0时区的时间,即:和北京时间将会相差8小时。
2.mybatis将本地的数据传入到mysql数据库服务器的时候,服务器会对数据进行检测,会把date类型的数据自动转换为mysql服务器所对应的时区,即0时区,所以会相差8小时。
3.springboot中对加了@RestController或者@Controller+@ResponseBody注解的方法的返回值默认是Json格式,
所以,对date类型的数据,在返回浏览器端时,会被springboot默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。所以最终返回到前端结果是相差8小时。
解决方案:
1.手动设置jvm时间:将时间改为第8时区的时间。
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"))
2.在apprication.yml文件中配置一下数据库连接信息,url加上:&serverTimezone=GMT%2b8。
3.将spring的json构造器的时区改正即可,在application.yml文件中添加。
或者可以使用注解,在entity实体类的date数据上添加注解,那么数据库传回的data数据要转换为json格式的时候就是北京时间了,再次传回到前端的时候,也不会出现时区问题.