在java中创建时间戳和日期

时间:2014-12-30 12:13:05

标签: java sql date timestamp

有许多java类处理时间(日期,calander..etc),还有更多的在线参考和教程,这使得它非常混乱,我不知道何时使用哪个类。

任何人都可以直截了当地声明如下:

  1. 创建时间戳实例以跟踪数据库上的事务
  2. 创建一个以DD / MM / YY格式(或任何类似的)格式保存今天日期的对象
  3. 创建一个对象,该对象包含DD / MM / YY格式(或任何类似的)任何给定日期
  4. 非常感谢!

3 个答案:

答案 0 :(得分:0)

<强> ANS1
您可以使用。

获取当前日期
Date date = new Date();

在SQL中,您可以将日期字段标记为自动更新为当前时间。

<强> ANS2
SimpleDateFormat允许各种日期格式。示例用法是:

Date d = new Date(secondsSunceEpoch);
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yy");
String time = df.format(d);

<强> ANS3
使用SimpleDateFormat中的parse方法可以使用任何字符串。

答案 1 :(得分:0)

try {

            DateFormat todaysDateFormat = new SimpleDateFormat("dd/mm/yy");
            Date date = new Date();

            //2. datestring hold your today's object in DD/MM/YY format 
            String datestring = todaysDateFormat.format(date);
            System.out.println("datestring "+datestring);


            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yy");
            java.util.Date parsedDate;
            parsedDate = dateFormat.parse(datestring);
            Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());

            //1.  Create an instance of a timestamp to keep track of transactions on a database
            System.out.println(timestamp);  // Use this time stamp as today's date foramt

            // 3.Create an object that holds ANY given date in DD/MM/YY format 
            SimpleDateFormat dateFormat3 = new SimpleDateFormat("dd/mm/yy");
            java.util.Date parsedDate3;
            parsedDate3 = dateFormat.parse("30/12/14");  // any given date
            String anyDatestring = todaysDateFormat.format(date);
            // it will hold any date string

        }catch (ParseException e) {
            e.printStackTrace();
        }  

答案 2 :(得分:0)

其他答案是正确但过时的。他们使用麻烦的旧遗产类。而是使用java.time类。

1

  

创建时间戳实例以跟踪数据库上的事务

Instant类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds

在Java 8中,当前时刻以毫秒分辨率捕获。在Java 9中,分辨率高达纳秒。在两个版本的Java中,Instant类都能够保持纳秒值。

Instant now = Instant.now(); 

在JDBC 4.2及更高版本中,通过PreparedStatement::setObjectResultSet::getObject与您的数据库进行交换。如果您的驱动程序无法执行此操作,请转换为java.sql.Timestamp

java.sql.Timestamp ts = java.sql.Timestamp.from( instant );

走向另一个方向。

Instant instant = ts.toInstant();

2

  

创建一个以DD / MM / YY格式(或任何类似的)格式保存今天日期的对象

LocalDate

LocalDate类表示没有时间且没有时区的仅限日期的值。

时区对于确定日期至关重要。对于任何给定的时刻,日期在全球范围内因地区而异。例如,法国巴黎午夜过后几分钟,在魁北克蒙特利尔的“昨天”仍然是新的一天。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );

要生成字符串,您可以指定格式设置模式,或者只允许DateTimeFormatter本地化。 Locale确定(a)用于翻译的人类语言,以及(b)用于决定大写,缩写和标点符号等问题的文化规范。

DateTimeFormatter f = DateTimeFormatter.ofLocalizeDate( FormatStyle.SHORT ).withLocale( Locale.UK );
String output = today.format( f );

3

  

创建一个对象,该对象包含DD / MM / YY格式(或任何类似的)

的任何给定日期

不要将日期时间对象与该日期时间值的字符串表示形式混淆。该对象可以解析或生成这样的字符串,但它与字符串是分开的和不同的。

所以我们已经看到了上面的解决方案:LocalDate对象保存了仅日期值。当需要向用户呈现时,生成一个String来表示值。

顺便说一句,调用toString会获得标准ISO 8601格式的字符串YYYY-MM-DD。

String output = localDate.toString();

java.time类遵循不可变对象模式。因此,您不要修改现有对象以更改其部分值。而是使用基于原始对象的部分值创建一个新对象。

LocalDate tomorrow = today.plusDays( 1 );