mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
101 lines
2.8 KiB
Java
101 lines
2.8 KiB
Java
package org.tests.timezone;
|
|
|
|
import io.ebean.Ebean;
|
|
import io.ebean.Transaction;
|
|
import org.junit.Ignore;
|
|
import org.junit.Test;
|
|
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.sql.SQLException;
|
|
import java.sql.Timestamp;
|
|
import java.util.Calendar;
|
|
import java.util.TimeZone;
|
|
|
|
/**
|
|
* Must run this manually with various JVM timezones for insert and fetch.
|
|
*/
|
|
public class TimezoneTests {
|
|
|
|
private final Timestamp nowTs = new Timestamp(1460000000000L);
|
|
|
|
public TimezoneTests() {
|
|
}
|
|
|
|
@Ignore
|
|
@Test
|
|
public void rawJdbc() throws SQLException {
|
|
|
|
// insert("Local");
|
|
// insert("UTC");
|
|
// insert("America/Los_Angeles");
|
|
|
|
// System.out.println("Local");
|
|
// fetch();
|
|
|
|
// System.out.println("UTC");
|
|
// setZone("UTC");
|
|
// fetch();
|
|
|
|
System.out.println("LA");
|
|
setZone("America/Los_Angeles");
|
|
fetch();
|
|
}
|
|
|
|
private void fetch() throws SQLException {
|
|
Transaction transaction = Ebean.beginTransaction();
|
|
Connection connection = transaction.getConnection();
|
|
|
|
PreparedStatement statement = connection.prepareStatement("select * from tztest");
|
|
ResultSet resultSet = statement.executeQuery();
|
|
while (resultSet.next()) {
|
|
System.out.println(" zone:" + resultSet.getString("zone"));
|
|
System.out.println(" ts:" + tsof(resultSet.getTimestamp("ts")));
|
|
System.out.println(" tstz:" + tsof(resultSet.getTimestamp("tstz")));
|
|
System.out.println(" ts1:" + tsof(resultSet.getTimestamp("ts1", cal())));
|
|
System.out.println("tstz1:" + tsof(resultSet.getTimestamp("tstz1", cal())));
|
|
}
|
|
System.out.println("");
|
|
resultSet.close();
|
|
statement.close();
|
|
transaction.end();
|
|
}
|
|
|
|
private String tsof(Timestamp timestamp) {
|
|
return "" + timestamp.getTime() + ", " + timestamp.toString() + ", " + timestamp.toInstant();
|
|
}
|
|
|
|
private void setZone(String zone) {
|
|
TimeZone.setDefault(TimeZone.getTimeZone(zone));
|
|
}
|
|
|
|
private void insert(String zone) throws SQLException {
|
|
|
|
String insert = "insert into tztest (zone, ts, tstz, ts1, tstz1) values (?,?,?,?,?)";
|
|
|
|
if (!zone.equalsIgnoreCase("local")) {
|
|
setZone(zone);
|
|
}
|
|
|
|
Transaction transaction = Ebean.beginTransaction();
|
|
Connection connection = transaction.getConnection();
|
|
PreparedStatement statement = connection.prepareStatement(insert);
|
|
statement.setString(1, zone);
|
|
statement.setTimestamp(2, nowTs);
|
|
statement.setTimestamp(3, nowTs);
|
|
statement.setTimestamp(4, nowTs, cal());
|
|
statement.setTimestamp(5, nowTs, cal());
|
|
statement.executeUpdate();
|
|
|
|
transaction.commit();
|
|
}
|
|
|
|
private Calendar cal() {
|
|
|
|
Calendar instance = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
|
|
//Calendar instance = Calendar.getInstance(TimeZone.getDefault());
|
|
return (Calendar) instance.clone();
|
|
}
|
|
}
|