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

本问题已经有最佳答案,请猛点这里访问。

我想创建一个没有时区的日期对象(例如: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);

日期没有格式。

精确的重复Java程序以获得当前的没有时间戳的日期,另外的重复候选是StAdppOrth.com /问题/ 5050170 //Helip;以及StaskOfFult.COM/Quass/477 2425/FALATAT-DATE-Java?Rq=1

@请在发布前搜索堆栈溢出。

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

Converts this Date object to a String of the form:

dow mon dd hh:mm:ss zzz yyyy

所以它的行为和文献记载的完全一样。

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

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

当然,这在您的示例中没有多大意义,因为您只分析了它——但假设您通常会在第一个日期前后传递日期。

注意,如果这是为了与数据库交互,最好不要将其作为字符串传递。尽可能多地将值保存在"本机"表示中,并使用诸如PreparedStatement.setDate之类的东西将其传递到数据库。

另一方面,如果您可以改变使用JoDA时间或Java 8中的新日期/时间API(EDCOX1,6),您将拥有与日期/时间相关的更平滑的时间。Date/CalendarAPI真的很可怕。

代码:

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

这是java.util.Date的toString()。

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();

}

所以,如果你通过一个日期,并尝试打印它,这将一直打印出来。

String your_format_date=sdf.format(pickUpDate);

System.out.println("pick Up Date" + your_format_date);

使用此代码:

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");

Date pickUpDate =sdf.parse("2007-06-21");

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

希望对你有帮助。

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

您需要的类型是JavaTime.LoalDead,在Java 8中添加。

如果不能使用Java 8,可以使用TyeTeNe,它是Java 7的后端。

虽然我同意本地日期是可取的,但假设每个人都可以使用Java 8还为时尚早。

更新了提到Java 7后端的答案。

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

您可以使用上述代码将Date格式化为String。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值