【问题标题】:Typecast sql.date to calendar将 sql.date 类型转换为日历
【发布时间】:2013-08-02 13:24:52
【问题描述】:

我有一些代码使用 sql.date 对象来获取格式为:yyyy-MM-dd 的当前日期。我想将其类型转换为与 sql.date 具有相同格式的日历对象。

这是 sql.date 的代码:

java.util.Date now = new java.util.Date();

java.sql.Date sqlDate = new java.sql.Date( now.getTime() );

编辑:

我想知道如何将它放入日历对象中。甚至有可能做到这一点吗?

【问题讨论】:

标签: java date casting


【解决方案1】:

java.sql.Date 没有格式。这只是一个约会。

要将其转换为字符串,请使用带有相关格式集的SimpleDateFormatter - 如果您确实需要yyyy-MM-dd,则只需使用toString。 (不幸的是,目前还不清楚您应该使用哪个时区 - java.sql.Date 在这方面的记录非常差。我怀疑它会使用默认的系统时区。)

要创建具有给定日期的Calendar 对象,您可以使用:

Calendar calendar = Calendar.getInstance();
calendar.setTime(sqlDate);

同样,Calendar 也没有文本格式 - 它表示特定时区中特定日历系统中的时间点,但与文本表示无关。

【讨论】:

  • 这很有效,谢谢。我不明白日期格式和日期是如何工作的。
【解决方案2】:

使用SimpleDateFormat#format()

System.out.println(new SimpleDateFormat("yyyy-MM-dd")
                   .format(Calendar.getInstance().getTime()));

【讨论】:

  • 所以我应该完全用日历替换日期?
  • 可以,不需要单独构造java.util.Date。您可以从Calendar#getTime() 获得它。
【解决方案3】:

Java Date 对象(注意 java.sql.Date java.util.Date)没有“格式”。它们代表时间的瞬间。

Calendar 也没有“格式”。

你的要求在 java 中没有意义。

考虑使用SimpleDateFormat 将这些内容之一格式化为字符串:

String str = new SimpleDateFormat("yyyy-MM-dd").format(myDate);

或者如果您使用Calendar 对象(不推荐):

String str = new SimpleDateFormat("yyyy-MM-dd").format(myCalendar.getTime()); 

【讨论】:

    【解决方案4】:

    你可以使用下面的sn-p。

    public class DateTest {
    
    public static void main(String[] arg){
    
        Calendar calendar = Calendar.getInstance();
        //setting a valid date
        Date date = new Date(113,07,10);
        //prints the date as per format
        System.out.println("Date in YYYY-MM-DD : " +date);
        //sets the calendar with the date value in java.sql.Date instance
        calendar.setTime(date);
        //use simple date formatter to format the value in calendar instance
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("Date formatted from Calendar instance : "+dateFormat.format(calendar.getTime()));
    }
    

    }

    请告诉我发生了什么!

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 1970-01-01
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多