我需要格式化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)
因此,当我需要更新日历时,进入日期结果将反映更改。
答案 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对象,其文本采用特定格式表示日期时间的值。但字符串和日期时间是分开的,彼此不同。
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 );
顺便说一句,我强烈建议不要使用两位数的年份。提出的歧义和解析涉及的问题不值得节省两个字符。