.net - 在 F# 中分别设置 DateTime 的日期/时间
问题描述
我只想更改 F# 中 System.DateTime 对象的日期和/或时间部分,同时保留现有字段。当我说“更改”时,我的意思是保持不变性,所以我想在操作后接收一个新的 DateTime 对象。
我已经说明了我会如何改变时间,但这似乎是不正确的。
open System
type State = {
When: DateTime
}
// How would I actually do the following?
// let setTime h m state = { state with When = { state.When with Hour = h; Minute = m } }
理想情况下,该解决方案适用于 .NET Core 和 Framework。
编辑
正如评论中提到的,关于如何更改 DateTime 有一个单独的问题,但这个问题似乎集中在 C#(而不是 F#)以及添加 TimeSpan 上。我想设置字段值(而不是添加到它们)。有一些答案可以复制字段并调用构造函数,但我希望有一个更优雅的解决方案。
解决方案
这是如何在 DateTime 中更改时间的最佳答案?翻译成 F#:
open System
let x = DateTime.Now
let y = x.Date + TimeSpan(10, 30, 0)
在哪里
printfn "%A" x
printfn "%A" y
印刷
10/5/2019 1:49:58 PM
10/5/2019 10:30:00 AM
您可以以类似的方式设置日期部分:
let x = DateTime.Now
let y = DateTime(2015, 03, 15) + x.TimeOfDay
推荐阅读
- reactjs - 减少宽度:我想减少 2 个选项卡之间的空间
- dockerfile - Bazel 3.5.1 版本下载
- python - 如何将大的 RGB 值作为参数发送,以在 python 中作为图片读取
- python - scikit-learn 模型的预测是线程安全的吗?
- java - 带可选参数的 Springboot 动态查询
- node.js - 如何在 Sequelize / Node.js 中设置沙盒帐户?
- angular - 在 Angular Material 中为粗体文本设置特定字体
- angular - 对属性的更改未出现在真实设备上的模板中
- javascript - 用 '&' 字符分割字符串,如果它是字符串中的第一个则忽略它
- android - 如何在颤振中更新 settings.gradle 文件