格式化日历

时间:2016-06-27 02:37:21

标签: java calendar

我需要格式化Calendar才能获得Date DD / MM / YY但没有转换成String,我需要它进入Date dataType。

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/M/yy");
Calendar cal2 = new GregorianCalendar(simpleDate);
 dateFormat.format(date); //Here i need to store the Date (dd/M/yy) into a Date kin of variable. (NO STRING)

因此,当我需要更新日历时,进入日期结果将反映更改。

2 个答案:

答案 0 :(得分:-1)

我不知道这是否足够接近,如果有经验的人可以检查一下那会很好!

将组合的“日期和时间”java.util.Date截断为日期组件,将其有效地留在午夜

public static Date truncateTime (Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime( date);
cal.set( Calendar.HOUR_OF_DAY, 0);
cal.set( Calendar.MINUTE, 0);
cal.set( Calendar.SECOND, 0);
cal.set( Calendar.MILLISECOND, 0);
return cal.getTime();

}

答案 1 :(得分:-1)

没有格式化日期

存储在日期时间类中的日期时间值没有格式

日期时间对象可以生成一个String对象,其文本采用特定格式表示日期时间的值。但字符串和日期时间是分开的,彼此不同。

java.time

LocalDate类代表一个仅限日期的值,没有时间和没有时区。

时区对于确定LocalDate至关重要。对于任何特定时刻,日期在全球各地按时区变化。例如,午夜过后几分钟在蒙特利尔仍然是“昨天”。

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

避免使用麻烦的旧日期时间类,如java.util.Date和java.util.Calendar。仅使用java.time类。

GregorianCalendar转换

如果您有GregorianCalendar个对象,请通过调用添加到旧类toZonedDateTime的新方法转换为ZonedDateTime

ZonedDateTime zdt = myGregCal.toZonedDateTime();

从那里得到LocalDate。 ZonedDateTime对象自己指定的时区用于确定该日期。

LocalDate localDate = zdt.toLocalDate();

java.util.Date转换

如果您有java.util.Date个对象,请转换为Instant。此类表示UTC时间轴上的时刻。

Instant instant = myUtilDate.toInstant();

应用时区以获得ZonedDateTime。然后如上所述获得LocalDate

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
LocalDate localDate = zdt.toLocalDate();

不可变对象

java.time类遵循Immutable Objects设计。而不是改变(“改变”)java.time对象的值或属性,而是基于原始对象的属性实例化新的java.time对象。

生成字符串

如果要生成表示LocalDate值的String,请定义格式设置模式。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/M/yy" );
String output = localDate.format( formatter );

顺便说一句,我强烈建议不要使用两位数的年份。提出的歧义和解析涉及的问题不值得节省两个字符。