Dha*_*ram 2 java timezone date simpledateformat
我想创建一个没有TimeZone的Date对象(例如:) 2007-06-21
.这可能吗?
当我使用以下方法打印时Thu Jun 21 00:00:00 GMT 2007
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
TimeZone timeZone = TimeZone.getTimeZone("GMT");
timeZone.setDefault(timeZone);
sdf.setTimeZone(timeZone);
Date pickUpDate = sdf.parse("2007-06-21");
System.out.println(pickUpDate);
Run Code Online (Sandbox Code Playgroud)
如果要格式化日期,则需要使用DateFormat
或类似的东西.一个Date
是刚刚的时间瞬间-自Unix纪元的毫秒数.它不知道时区,日历系统或格式.该toString()
方法始终使用系统本地时区,并始终以默认方式对其进行格式化.从文档:
将此Date对象转换为表单的String:
dow mon dd hh:mm:ss zzz yyyy
所以它的行为完全符合记录.
你已经有一个DateFormat
正确的格式,所以你只需要调用format
它:
System.out.println("pickUpDate" + sdf.format(pickUpDate));
Run Code Online (Sandbox Code Playgroud)
当然,在你的样本中它没有多大意义,因为你只是解析它 - 但可能你通常会先将日期传递给它.
请注意,如果这是与数据库的交互,最好不要将其作为字符串传递.在尽可能多的时间内将值保持为"本机"表示,并使用类似的PreparedStatement.setDate
方式将其传递给数据库.
顺便说一句,如果你能有可能改变使用约达时间或用Java 8新的日期/时间API( java.time.*
),你会拥有它与任何日期/时间相关的更加平滑的时间.该Date
/ Calendar
API是真正可怕的.