相关疑难解决方法(0)

年份和年份有什么区别?

DateTimeFormatter类文档定义了不同的符号u为一年,y一年的时代:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns

年份和年份有什么区别?

java-8 java-time

56
推荐指数
1
解决办法
8449
查看次数

Java中的`DateTimeFormatter`格式化代码中的`uuuu`与`yyyy`?

DateTimeFormatter类文件说,有关当年的格式代码:

你在2004年; 04

y年的2004年; 04

...

年份:字母数决定了使用填充的最小字段宽度.如果字母数是2,则使用减少的两位数形式.对于打印,这将输出最右边的两位数字.对于解析,这将使用2000的基值进行解析,从而产生2000到2099(包括2000和2099)范围内的一年.如果字母数小于4(但不是2),则符号仅按负号年份输出,符合SignStyle.NORMAL.否则,如果超出了焊盘宽度,则根据SignStyle.EXCEEDS_PAD输出符号.

没有提到"时代".

那么究竟是什么这两个代码之间的差异,uy,yearyear-of-era

什么时候应该使用类似这种模式的东西uuuu-MM-dd以及何时yyyy-MM-dd使用Java中的日期?

似乎那些知道使用的代码编写的示例代码uuuu,但为什么呢?

其他格式化类如遗产SimpleDateFormat只有yyyy,所以我很困惑为什么java.time uuuu为"年代" 带来了这个.

datetime parsing date date-formatting java-time

26
推荐指数
3
解决办法
8163
查看次数

为什么使用带有 YYYY 模式的 DateTimeFormatter 格式化日期会给出错误的年份?

在错误的年份使用DateTimeFormatter(使用下面的模式)LocalDate结果。

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

DateTimeFormatter format = DateTimeFormatter.ofPattern("MM-d-YYYY");
LocalDate date = LocalDate.of(2018, 12, 31);

date.format(format); // returns 12-31-2019 (expected 2018)
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

java time date-formatting

6
推荐指数
1
解决办法
1565
查看次数

为什么我的GregorianCalendar对象返回错误的星期几?

我的问题似乎非常简单.我从GregorianCalendar对象创建一个日历图形用户界面,并使用它的方法计算不同月份的正确天数,以及不同日期的相应工作日.

但工作日有一天休息一致.日历声称2013年7月1日是'2',这在我的世界意味着星期二.星期一应该是'1'."简单!" 我想,并把它放在一行:c.setFirstDayOfWeek(Calendar.MONDAY); 但没有给出任何反应.

所以我搜索stackoverflow得到一个答案,但是每个有问题的人似乎都忘记了1月是0,而不是1.我没有.所以现在我被卡住了.

作为一个简化的代码,我创建了一个非常短的代码片段,它具有相应的输出:

    GregorianCalendar c = new GregorianCalendar();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.set(Calendar.MONTH, 6);
    c.set(Calendar.DAY_OF_MONTH, 1);
    c.set(Calendar.YEAR, 2013);

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
    System.out.println(sdf.format(c.getTime()));
    System.out.println(c.get(Calendar.DAY_OF_WEEK));
Run Code Online (Sandbox Code Playgroud)

输出是:

2013年1月7日

2

我拒绝在我的代码中输入"-1",错误地纠正了显然是错误的症状.感谢帮助.

java calendar date gregorian-calendar

4
推荐指数
2
解决办法
1万
查看次数

Java 8 LocalDate不会解析有效的日期字符串

Java 8在这里.我有以下代码:

final String createdDateStr = "20110920";
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYYMMdd");
final LocalDate localDate = LocalDate.parse(createdDateStr, formatter);
Run Code Online (Sandbox Code Playgroud)

在运行时,我得到以下异常:

java.time.format.DateTimeParseException: Text '20110920' could not be parsed at index 0

    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.
Run Code Online (Sandbox Code Playgroud)

......被LocalDate.parse(...)调用抛出 解析器出了什么问题?!

java datetime datetime-format java-8 localdate

3
推荐指数
1
解决办法
641
查看次数

用于日期格式的 java LocalDate 中的错误

我正在运行一些代码,遇到了一个我无法理解的奇怪错误。所以我尝试调试它并运行多个测试,发现这是我正在运行的代码

@Test
public void test(){

    LocalDate firstDay = LocalDate.parse("2020-12-01");
    LocalDate lastDay = LocalDate.parse("2020-12-31");

    String firstDayString = firstDay.format(DateTimeFormatter.ofPattern("YYYYMMdd"));
    String lastDayString = lastDay.format(DateTimeFormatter.ofPattern("YYYYMMdd"));

    System.out.println(firstDayString);
    System.out.println(lastDayString);

}
Run Code Online (Sandbox Code Playgroud)

这是输出

20201201
20211231
Run Code Online (Sandbox Code Playgroud)

请注意,当我尝试执行此格式时,最后日期的年份已更改为 2021 年。有没有其他人注意到这一点?

java localdate

1
推荐指数
1
解决办法
28
查看次数

Java SimpleDateFormat在Date对象中返回错误的值

我正在尝试解析一个字符串以获取Date对象,但它总是返回Sun. 2012年12月30日为日期.有没有人对我做错了什么有任何想法?

我使用YYYY-MM-dd格式的字符串使用相同的代码,它工作得很好,所以我不确定为什么切换到这种格式会导致问题.

 public static Date getDateObjFromStr(String dateStr)
{
    DateFormat formatter = new SimpleDateFormat("MM/dd/YYYY");
    Date dateObj;
    try {
        dateObj = formatter.parse(dateStr);
        return dateObj;
    } catch(Exception e) {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

表示日期的字符串

SimpleDateFormat对象返回的Date对象

java date date-format simpledateformat

0
推荐指数
1
解决办法
3090
查看次数

为什么Java的java.time.format.DateTimeFormatter#format(LocalDateTime)增加一年?

这是代码:

LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(1451438792953L), ZoneId.of("UTC"));
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYY-MM-dd'T'HH:mm:ss.SSS'Z'");
String output = dateTimeFormatter.format(localDateTime);
Run Code Online (Sandbox Code Playgroud)

这是值localDateTime

2015-12-30T01:26:32.953
Run Code Online (Sandbox Code Playgroud)

这是值output

2016-12-30T01:26:32.953Z
Run Code Online (Sandbox Code Playgroud)

为什么要增加一年?

其中java.time.temporal.WeekFields有几种方法,有时会newYearWeek增加年数1。为什么?

这是一个奇怪的错误。

java time localization utc

0
推荐指数
1
解决办法
167
查看次数