Java 时间戳更改日期
在将时间戳存储在数据库中之前,我使用以下服务器代码从用户处获取时间戳的文本表示Java 时间戳更改日期,java,android,mysql,date,datetime,Java,Android,Mysql,Date,Datetime,在将时间戳存储在数据库中之前,我使用以下服务器代码从用户处获取时间戳的文本表示 String timestampString = request.getParameter("timestamp"); String timezoneID = request.getParameter("timezone"); System.out.println(TAG + " newTestIdString: " + newTestIdString + "\n"
String timestampString = request.getParameter("timestamp");
String timezoneID = request.getParameter("timezone");
System.out.println(TAG + " newTestIdString: " + newTestIdString
+ "\n" + TAG + " timestampString: " + timestampString);
Integer newTestId = Integer.parseInt(newTestIdString);
try{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone(timezoneID));
Date parsedDate = dateFormat.parse(timestampString);
System.out.println(TAG + "timezone-JP: " + dateFormat.format(parsedDate));
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(TAG + "timezone-UTC: " + dateFormat.format(parsedDate));
dateFormat.format(parsedDate);
timestamp = new java.sql.Timestamp(parsedDate.getTime());
System.out.println(TAG + "timestamp: " + timestamp.toString());
}catch(Exception e){
e.printStackTrace();
}
但是,如果用户在7:29发送包含时间戳字符串的数据,我将得到以下输出:
INFO | jvm 1 | 2015/09/17 18:29:59 | ProcessTest newTestIdString: 1109
INFO | jvm 1 | 2015/09/17 18:29:59 | ProcessTest timestampString: 2015-09-18 07:29:58
INFO | jvm 1 | 2015/09/17 18:29:59 | ProcessTest timezone-JP: 2015-09-18 07:29:58
INFO | jvm 1 | 2015/09/17 18:29:59 | ProcessTest timezone-UTC: 2015-09-17 10:29:58
INFO | jvm 1 | 2015/09/17 18:29:59 | ProcessTest timestamp: 2015-09-17 18:29:58.0
为什么时间戳会更改最后一行中的日期
如何使用UTC日期创建时间戳?时间戳或日期没有任何时区关联 执行
timestamp.toString()
时,它会在JVM的默认时区中提供日期的字符串表示形式
如果您不想在特定时区使用它,只需像处理其他Date
对象一样format()
即可
System.out.println(TAG + "timestamp: " + dateFormat.format(timestamp));
PS:java.sql.Timestamp
扩展了java.util.Date
如果您指的是主机操作系统时区,那么从技术上讲,它不是您的“系统时区”。旧类(java.util.Date、java.sql.Date、java.sql.Timestamp)上的toString
方法在生成日期时间值的字符串表示形式时应用JVM的当前默认时区。当前默认时区可以在运行时随时由运行在同一JVM中的任何应用程序的任何代码的任何线程更改。