如何在Elm中创建日期变量

如何在Elm中创建日期变量,elm,Elm,我想在elm的记录中硬编码一个日期。记录签名是 type alias Record = { .., startDate : Date, .. } 在我的代码中,我正在执行 record = { .., startDate = Date.fromString "2011/1/1", .. } 问题是记录类型需要日期类型,但日期。fromString签名无效 String -> Result.Result String Date.Date 如何创建要在记录类型上使用的日期 您将获得结果,

我想在elm的记录中硬编码一个日期。记录签名是

type alias Record = { .., startDate : Date, .. }
在我的代码中,我正在执行

record = { .., startDate = Date.fromString "2011/1/1", .. }
问题是记录类型需要日期类型,但日期。fromString签名无效

String -> Result.Result String Date.Date
如何创建要在记录类型上使用的日期 您将获得
结果
,因为有可能将字符串解析为日期失败。你可以用两种方法中的一种来处理它

别理它 如果您只想说“我知道这个字符串将是有效日期,我不担心我可能会把它弄糟”,那么您可以提供一个默认日期

Date.fromString“2011/1/1”|>Result.withDefault(Date.fromTime 0)
这将给您留下一个
日期
,但如果解析失败,将默认为unix纪元

使用它 考虑一下如果解析失败,您希望发生什么,并在使用日期的地方处理它。例如,如果将其显示为字符串,则可以显示日期,或者如果解析失败,则显示“TBA”


注意:您可能已经注意到
Date.fromTime
只返回
日期
而不是
结果
(因为
Int
总是可以解析为
日期
)。如果您不介意将日期转换为unix时间戳,您可以硬编码时间戳并使用它,而不必在repl中处理
Result
s

Date.fromString“2011/1/1”|>Result.withDefault(Date.fromTime 0)
返回:
{}:Date Date.Date
。仍然没有日期,
date.date
类型不能很好地
toString
并显示为
{}
。如果您尝试
(Date.fromString“2011/1/1”|>Result.withDefault(Date.fromTime 0)|>(\d->(Date.year d,Date.month d,Date.day d))
您应该会看到
(2011年1月1日):(Int,Date.month,Int)