Java Android日历/日期格式此格式XXXXXXXX

Java Android日历/日期格式此格式XXXXXXXX,java,android,calendar,format,Java,Android,Calendar,Format,我真的用这个 Calendar calendar = Calendar.getInstance(); final String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime()); 结果=2019年3月27日星期三 我需要这个:27032019 没有,/或。 只有XXXXXXXX 感谢您使用SimpleDataFormat: 试试这个: Calendar calend

我真的用这个

Calendar calendar = Calendar.getInstance();
final String currentDate = 
DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
结果=2019年3月27日星期三

我需要这个:27032019 没有,/或。 只有XXXXXXXX

感谢您使用SimpleDataFormat:

试试这个:

    Calendar calendar = Calendar.getInstance();
    Date date = calendar.getTime();
    DateFormat dateFormat = new SimpleDateFormat("ddMMyyyy");
    System.out.println(dateFormat.format(date));

你能做的就是使用简短的格式,去掉不必要的部分

final String currentDate = 
DateFormat.getDateInstance(DateFormat.SHORT).format(calendar.getTime());
currentDate= currentDate.replace("/"", "");

以下是现代的答案和一些额外的想法

在大多数情况下,您不希望将日期格式化为27032019。它不容易被人阅读,也不建议序列化

也不要考虑使用日历、DateFormat、SimuleDead格式或日期。这些课程早已过时,设计也很糟糕。相反,您可以使用java.time,即现代java日期和时间API。和你一起工作真是太好了

使用java.time和ThreeTenABP进行序列化 如果您需要日期字符串是机器可读的(例如,如果它是用于JSON或用于存储到文本文件中,您或其他人需要从中读回),请使用标准ISO 8601格式。LocalDate.toString生成此格式,因此我们不需要任何显式格式化程序:

    final String currentDate
            = LocalDate.now(ZoneId.of("Africa/Khartoum")).toString();
    System.out.println(currentDate);
今天运行时的输出为:

2019-03-27

压缩程序iso8601格式 如果您坚持不使用任何标点符号的紧凑格式,ISO 8601也提供:

    final String currentDate = LocalDate.now(ZoneId.of("Africa/Khartoum"))
            .format(DateTimeFormatter.BASIC_ISO_DATE);
20190327

你的格式 如果你真的坚持我不明白你为什么要这么做,java.time当然也可以生成你所要求的格式:

    final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("ddMMuuuu");
    final String currentDate = LocalDate.now(ZoneId.of("Africa/Khartoum"))
            .format(dateFormatter);
27032019

问题:我可以在Android上使用java.time吗? 是的,java.time在较旧和较新的Android设备上运行良好。它至少需要Java6

在Java8和更高版本以及API级别为26的较新Android设备上,内置了现代API。 在Java6和Java7中,获取ThreeTen Backport,即JSR310的现代类ThreeTen的Backport;请参阅底部的链接。 在较旧的Android上,使用Android版本的ThreeTen Backport。它叫ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。我为上述代码段导入的内容如下:

import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.format.DateTimeFormatter;
链接 解释如何使用java.time。 ,其中首次描述了java.time。 ,java.time的后端口到JSR-310的Java6和Java7。 ,Android版Three Ten Backport ,解释得非常透彻。
研究简化了格式。但我认为这应该是可行的:SimpleDataFormat=newSimpleDataFormatDmmyytry使用新的Java8时间api的LocalDate。现在过时了。作为一个考虑,抛开长期过时和臭名昭著的麻烦DateFormat和朋友,并添加到Android项目中,以便使用JavaTime-现代java日期和时间API。和你一起工作真是太好了。LocalDate.nowyourTimeZone.formatDateTimeFormatter.OfPatternDdmmuuu.您需要27032019做什么?它不容易被人阅读,也不建议对后者进行序列化,而是使用格式:2019-03-27。在en US语言环境中,这给出了32719。它可能在某些地区工作,但结果因地区而异。
import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.format.DateTimeFormatter;