如何创建没有时间戳的java日期对象



我想创建一个不带时区的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);

如果要格式化日期,则需要使用DateFormat或类似的方法。Date,只是一个瞬间——自Unix纪元以来的毫秒数。它不知道时区、日历系统或格式。toString()方法始终使用系统本地时区,并始终以默认方式对其进行格式化。来自文件:

将此Date对象转换为以下形式的字符串:

星期四hh:mm:ss zzz yyyy

因此,它的行为完全符合记录。

你已经有了一个格式正确的DateFormat,所以你只需要在上面调用format

System.out.println("pickUpDate" + sdf.format(pickUpDate));

当然,考虑到你刚刚解析了它,这在你的样本中没有多大意义——但据推测,你通常会先传递日期。

请注意,如果这是为了与数据库交互,那么最好不要将其作为字符串传递。将该值保持在";"本地";表示,并使用类似PreparedStatement.setDate的东西将其传递到数据库。

顺便说一句,如果您可以可能更改为使用Joda Time或Java 8(java.time.*(中新的日期/时间API,那么任何与日期/时间相关的内容都会更加流畅。Date/Calendar API真的很可怕。

这是java.util.DatetoString()

    public String toString() {
        // "EEE MMM dd HH:mm:ss zzz yyyy";
        BaseCalendar.Date date = normalize();
        StringBuilder sb = new StringBuilder(28);
        int index = date.getDayOfWeek();
        if (index == gcal.SUNDAY) {
            index = 8;
        }
        convertToAbbr(sb, wtb[index]).append(' ');            // EEE
        convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
        CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd
        CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
        CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
        CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
        TimeZone zi = date.getZone();
        if (zi != null) {
            sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
        } else {
            sb.append("GMT");
        }
        sb.append(' ').append(date.getYear());  // yyyy
        return sb.toString();
    }

因此,如果你要传递一个日期并尝试打印它,它将一直打印出来。

代码:

Date date = new Date();     
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));

日期:Fri Apr 29 04:53:16 GMT 2016

样品输出:2016-04-29

所需进口:

import java.util.Date; //for new Date()
import java.text.SimpleDateFormat; // for the format change
System.out.println("pickUpDate " + sdf.format(pickUpDate));

您可以使用上面的代码将Date格式化为String

使用此代码:

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Date pickUpDate =sdf.parse("2007-06-21");
System.out.println("pickUpDate "+sdf.format(pickUpDate));

希望它能帮助你。

 String your_format_date=sdf.format(pickUpDate);
 System.out.println("pick Up Date " + your_format_date);

Date不是日期。这是一个时间戳。这是一些令人印象深刻的API设计,不是吗?

现在您需要的类型是java.time.LocalDate,它是在Java8中添加的。

如果你不能使用Java8,你可以使用ThreeTen,一个Java7的后台端口。

相关内容

  • 没有找到相关文章

最新更新