小编Ole*_*.V.的帖子

Java 8 DateTimeFormatter两位数18年解析为0018而不是2018年?

使用Java 8,下面的代码将"18"解析为年"0018"而不是"2018".

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/y");
return LocalDate.parse(date, formatter);
Run Code Online (Sandbox Code Playgroud)

输入日期为"01/05/18".

1)为什么结果是"0018"?难道DateTimeFormatter没有按照80-20规则?

2)如何控制SimpleDateFormat解析为19xx或20xx?谈到SimpleDateFormat.set2DigitYearStart(Date)可以用来修复这一年.有没有类似的东西DateTimeFormatter

我希望"M/d/y"能解析2到4位数年份.

"M/d/yy"抛出4位数的异常并将"01/05/97"解析为"2097-01-05".理想情况下,这应解析为"1997-01-05".

"M/d/yyyy"抛出2位数年份的例外情况.

date-format date-parsing java-8 java-time

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

Java 8的datetime包DayOfWeek枚举顺序

我正在查看Java 8的新日期时间包的教程.在关于DayOfWeekMonth枚举的页面上,它表示DayOfMonth枚举从星期一到星期日.这是为什么?我使用的每个其他系统(包括.NET)都在周日开始.

java datetime library-design dayofweek java-time

9
推荐指数
2
解决办法
273
查看次数

Java 8 - 将 LocalDate 转换为 OffsetDateTime

我想知道是否可以在 Java 8 中将 LocalDate 转换为 OffsetDateTime。

例如假设我有这个 LocalDate:

1992-12-28
Run Code Online (Sandbox Code Playgroud)

然后我想把它转换成这样OffsetDateTime

1992-12-28T00:00-03:00
Run Code Online (Sandbox Code Playgroud)

假设我们知道时区,例如 America/Santiago。

java datetime date datetime-conversion java-8

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

相对于现有的抽象类 Clock,新接口 java.time.InstantSource 的主要目的是什么?

Java 17 中添加了一个新接口。java.time.InstantSource如果该接口的所有实现都是实现,那么该附加抽象的用例是什么Clock

java java-time java.time.instant

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

将Period添加到startDate不会产生endDate

我有两个LocalDate声明如下:

val startDate = LocalDate.of(2019, 10, 31)  // 2019-10-31
val endDate = LocalDate.of(2019, 9, 30)     // 2019-09-30
Run Code Online (Sandbox Code Playgroud)

然后我使用Period.between函数计算它们之间的周期:

val period = Period.between(startDate, endDate) // P-1M-1D
Run Code Online (Sandbox Code Playgroud)

此处的期间为负数的月份和天数,如果endDate早于,则可以预期startDate

但是,当我将其添加period回时startDate,得到的结果不是endDate,而是前一天的日期:

val endDate1 = startDate.plus(period)  // 2019-09-29
Run Code Online (Sandbox Code Playgroud)

所以问题是,为什么不不变

startDate.plus(Period.between(startDate, endDate)) == endDate

保留这两个日期?

Period.between谁返回了不正确的期限,还是LocalDate.plus谁添加了不正确的期限?

period date-difference kotlin java-time localdate

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

类型不匹配无法从类型Optional<User>转换为User

我正在尝试创建一个允许用户更新、编辑、删除等的网站,并且我已经到达更新或编辑用户\xe2\x80\x99s信息的部分。我使用不同的方法多次尝试,但似乎无法克服该错误。我完全忘记了Optional<>我只是不明白\xe2\x80\x99t得到它。我已阅读https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html,但我不明白它应该如何编码,它只是不点击。如果有人可以告知如何在我的代码中对其进行编码并请解释它,我将非常感激。也许是因为我工作过度并且没有睡觉,但我似乎无法纠正这个错误。这是我尝试编辑用户信息时在页面上收到的错误:

\n\n

出现意外错误(类型=内部服务器错误,状态=500)。\n对于输入字符串:“id”\njava.lang.NumberFormatException:对于输入字符串:id

\n\n
    //Repository\n\n    public interface UserRepository extends CrudRepository<User, Integer> {\n     }\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是用户服务

\n\n
    //UserService\n\n    @Service\n    @Transactional\n    public class UserService {\n\n        private final UserRepository userRepository;\n\n        public UserService(UserRepository userRepository) {\n            this.userRepository=userRepository;\n\n        }\n        public void saveMyUser(User user) {\n            userRepository.save(user);\n        }\n\n        public List<User> showAllUsers(){\n\n            List<User> users = new ArrayList<User>();\n            for(User user: userRepository.findAll()) {\n                users.add(user);\n            }\n\n            return users;\n        }\n\n        public void deleteMyUser(int id) {\n            userRepository.deleteById(id);\n\n        }\n\n        public User editUser (int id) {\n\n            return userRepository.findById(id);//I also get an error here as …
Run Code Online (Sandbox Code Playgroud)

java java-8 option-type

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

如何将 java.time.format.TemporalAccessor 转换为 java.util.Date

如何将 TemporalAccessor 转换为 java.util.Date?

TemporalAccessor accessor = functionReturnsTemporalAccessor()
Date date = Date.from(accessor)
Run Code Online (Sandbox Code Playgroud)

Date.from()不接受TemporalAccessor,有什么方法可以转换为java.util.Date吗?

java date temporal java.util.date datetime-conversion

8
推荐指数
2
解决办法
9906
查看次数

DateTimeFormatter.parse 返回无效的日语日期

我正在尝试将日语日期字符串转换为 JapaneseDate。

\n
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("Gyy\xe5\xb9\xb4MM\xe6\x9c\x88dd\xe6\x97\xa5")\n    .withChronology(JapaneseChronology.INSTANCE)\n    .withResolverStyle(ResolverStyle.LENIENT);\nJapaneseDate d = JapaneseDate.from(formatter.parse("\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5"));\nSystem.out.println(d);\nSystem.out.println(d.format(formatter));\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Japanese Reiwa 71-01-01\n\xe4\xbb\xa4\xe5\x92\x8c71\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\n
Run Code Online (Sandbox Code Playgroud)\n

由于“\xe4\xbb\xa4\xe5\x92\x8c\xe5\x85\x83\xe5\xb9\xb4”是“2019”,“\xe4\xbb\xa4\xe5\x92\x8c71\xe5\xb9\ xb401\xe6\x9c\x8801\xe6\x97\xa5" 为 "2089-01-01"。\n"\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801 \xe6\x97\xa5" 必须是 "1989-01-01"。

\n

我怎样才能正确地转换它?

\n

如果我将解析器样式更改为ResolverStyle.STRICT,它会抛出

\n
java.time.format.DateTimeParseException: Text \'\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\'\ncould not be parsed: year, month, and day not valid for Era\n
Run Code Online (Sandbox Code Playgroud)\n

如果我将解析器样式更改为ResolverStyle.SMART,它会抛出

\n
java.time.format.DateTimeParseException: Text \'\xe5\xb9\xb3\xe6\x88\x9001\xe5\xb9\xb401\xe6\x9c\x8801\xe6\x97\xa5\'\ncould not be parsed: Invalid YearOfEra for Era: Heisei 101\n
Run Code Online (Sandbox Code Playgroud)\n

java date java-time datetimeformatter

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

如何用java中的两个或三个毫秒数字解析日期时间?

这是我将String解析成的方法LocalDateTime.

    public static String formatDate(final String date) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS");
        LocalDateTime formatDateTime = LocalDateTime.parse(date, formatter);
        return formatDateTime.atZone(ZoneId.of("UTC")).toOffsetDateTime().toString();
    }
Run Code Online (Sandbox Code Playgroud)

但这仅适用于输入字符串, 2017-11-21 18:11:14.05 但无法2017-11-21 18:11:14.057 使用DateTimeParseException.

如何定义适用于.SS.SSS?的格式化程序?

java datetime-format datetime-parsing java-time dateformatter

7
推荐指数
3
解决办法
2930
查看次数

在语言建模中,为什么我必须在每个新的训练时期之前 init_hidden 权重?(pytorch)

我对pytorch语言建模中的以下代码有疑问:

print("Training and generating...")
    for epoch in range(1, config.num_epochs + 1): 
        total_loss = 0.0
        model.train()  
        hidden = model.init_hidden(config.batch_size)  

        for ibatch, i in enumerate(range(0, train_len - 1, seq_len)):
            data, targets = get_batch(train_data, i, seq_len)          
            hidden = repackage_hidden(hidden)
            model.zero_grad()

            output, hidden = model(data, hidden)
            loss = criterion(output.view(-1, config.vocab_size), targets)
            loss.backward()  
Run Code Online (Sandbox Code Playgroud)

请检查第 5 行。

init_hidden 函数如下:

def init_hidden(self, bsz):
    weight = next(self.parameters()).data
    if self.rnn_type == 'LSTM':  # lstm?(h0, c0)
        return (Variable(weight.new(self.n_layers, bsz, self.hi_dim).zero_()),
                Variable(weight.new(self.n_layers, bsz, self.hi_dim).zero_()))
    else:  # gru & rnn?h0
        return Variable(weight.new(self.n_layers, …
Run Code Online (Sandbox Code Playgroud)

nlp machine-learning recurrent-neural-network pytorch

7
推荐指数
2
解决办法
1947
查看次数