Java 格式化时%-8.8s是什么意思?您能解释一下这个日期格式%1$tY%1$tm%1$td吗?

Java 格式化时%-8.8s是什么意思?您能解释一下这个日期格式%1$tY%1$tm%1$td吗?,java,formatting,Java,Formatting,我得到'-'是左对齐的,但是中间的句点('.')是什么 我还看到了很多隐含的CIMAL7SignLastTwoZero。 我读到“默示小数仅仅意味着在字段中的指定位置默示有一个小数点,但实际上不存在于文件中”,但我没有得到“7SignLastTwoZero”部分 %-8.8s 为了获得初步了解,让我们尝试一下: System.out.format(Locale.ENGLISH, "<%-8.8s>%n", "12345678"); System.out.format(

我得到'-'是左对齐的,但是中间的句点('.')是什么

我还看到了很多隐含的CIMAL7SignLastTwoZero。 我读到“默示小数仅仅意味着在字段中的指定位置默示有一个小数点,但实际上不存在于文件中”,但我没有得到“7SignLastTwoZero”部分

%-8.8s 为了获得初步了解,让我们尝试一下:

    System.out.format(Locale.ENGLISH, "<%-8.8s>%n", "12345678");
    System.out.format(Locale.ENGLISH, "<%-8.8s>%n", "12345");
    System.out.format(Locale.ENGLISH, "<%-8.8s>%n", "123456789012");

Conversion  Argument Category  Description
------------------------------------------------------------------------------
't', 'T'    date/time          Prefix for date and time conversion characters.
                               See Date/Time Conversions. 
可选精度通常为非负十进制整数 用于限制字符数。具体行为 取决于转换

Conversion  Argument Category  Description
------------------------------------------------------------------------------
't', 'T'    date/time          Prefix for date and time conversion characters.
                               See Date/Time Conversions. 
精度

对于常规参数类型,精度是 要写入输出的字符

您添加了:

这些要求是:唯一的8位学校ID,用于报告 学生信息。字母数字,长度:8

在这种情况下,我会警告
%-8.8s
。如果由于某种错误,有一个9或10位的ID,没有人会发现,因为格式默认截断为8位。最好打印所有数字,以便我们可以看到它们,或者以某种方式报告错误

%1$tY%1$tm%1$td 20200129

此格式字符串将参数1中的年、月和月日打印到format方法
1$
表示格式字符串后的第一个参数
t
表示日期和/或时间,而
Y
m
d
表示日期的不同部分。因此,产量意味着2020年1月29日。所有这些也都记录在案:

可选参数_index是一个十进制整数,表示 参数在参数列表中的位置。第一个论点是 由“1$”引用,第二个由“2$”引用,等等

Conversion  Argument Category  Description
------------------------------------------------------------------------------
't', 'T'    date/time          Prefix for date and time conversion characters.
                               See Date/Time Conversions. 

Conversion  Argument Category  Description
------------------------------------------------------------------------------
't', 'T'    date/time          Prefix for date and time conversion characters.
                               See Date/Time Conversions. 
以下转换字符用于格式化日期:

    'Y'   Year, formatted as at least four digits with leading zeros as necessary, e.g. 0092 equals 92 CE for the Gregorian calendar.
    'm'   Month, formatted as two digits with leading zeros as necessary, i.e. 01 - 13.
    'd'   Day of month, formatted as two digits with leading zeros as necessary, i.e. 01 - 31
我只引用了上表中的3个相关条目,还有更多的字母

编辑:顺便说一句,通过以下方式获得后一个结果可能更清晰:

    System.out.println(LocalDate.now(ZoneId.of("Europe/Kirov"))
            .format(DateTimeFormatter.BASIC_ISO_DATE));
自从我第一次发布这个答案以来,基洛夫已经过了午夜,所以现在输出给我们:

20200130

文档链接

您能为上下文发布一段代码吗?您阅读了吗?圆点将字段宽度与精度分开。在这种情况下,如果字符串较长,则精度为8将导致字符串截断为8个字符。第二个格式化字符串将参数1中的年、月和月日打印到
format
方法中
1$
表示第一个参数
t
表示日期和/或时间,
Y
m
d
表示日期的不同部分。@Erwinboldwidt reportingStudentId,%-8.8s要求:用于报告学生信息的唯一8位学校ID。字母数字,长度:8我不懂句号。为什么不是-8s?