Q
相对日期解析
-2
A
回答
1
扩大对我的评论:
只是Monday
没有进一步日期引用在解析器的眼中是没有意义的,所以它被丢弃。哪个星期一?解析器是严格的,不是模糊的。假设星期一指的是本周,这不是一个这样的解析器可以做的事情。你不会为此编写自己更复杂的解析器。
所以它必须是沿着这些路线 - 一个相对模糊的一天,一个真正的日期转换,并取代一个功能,在原来的表达,而另一个是分析整个事情:
const dateFormat = "2006-01-02"
const longForm = "2006-01-02 at 3:04 PM"
func parseFuzzyDate(fuzzyTime string) (time.Time, error) {
formattedTime, err := parseDayAndReplaceIt(fuzzyTime)
if err != nil {
return nil, err
}
return time.Parse(longForm, formattedTime)
}
第二个函数获取模糊时间,找到一天,解析它并返回。我不会去实现它,只是在注释中写什么要做到:
func parseDayAndReplaceIt(fuzzyTime string) (string, error) {
// 1. Extract the day
// 2. Parse weekday names to relative time
// 3. if it's not a weekday name, parse things like "tomorrow" "yesterday"
// 4. replace the day string in the original fuzzyTime with a formatted date that the parser can understand
// 5. return the formatted date
}
0
我调整的东西,我写了一段时间后,并巩固了这个示例代码:
func lastDateOf(targetDay time.Weekday, timeOfDay time.Time) time.Time {
const oneDay = 24 * time.Hour
var dayIndex time.Duration
//dayIndex -= oneDay
for {
if time.Now().Add(dayIndex).Weekday() == targetDay {
y, m, d := time.Now().Add(dayIndex).Date()
return timeOfDay.AddDate(y, int(m)-1, d-1)
}
dayIndex -= oneDay
}
}
它返回前一个targetDay
的相对于现在的日期,将其添加到timeOfDay
,假设timeOfDay
包含小时,分钟和秒以及年,月和日的零时间值,它将为您提供合适的答案。
这不是很灵活,但我相信它适合你的例子相当好。虽然它没有涉及“明天”,“昨天”或“下周六”等相关术语。
playground中的可运行版本。
0
定制解析器:
func RelativeDateParse(s string) (time.Time, error) {
for n := 0; n < 7; n++ {
day := time.Now().AddDate(0, 0, -n)
dayName := day.Format("Monday")
switch n {
case 0:
dayName = "today"
case 1:
dayName = "yesterday"
}
s = strings.Replace(s, dayName + " at", day.Format("2006-01-02"), -1)
}
return time.Parse("2006-01-02 3:04 PM", s)
}
相关问题
- 1. 库解析相对日期(如谷歌日历可以)在C#
- 2. Java日期解析
- 3. GWT解析日期
- 4. Struts2日期解析
- 5. Python日期解析
- 6. 解析日期 - Java
- 7. 解析Java日期
- 8. 解析Javascript日期
- 9. MagicalRecord日期解析
- 10. 解析Java日期
- 11. OpenCSV日期解析
- 12. JSON日期解析
- 13. Grails解析日期
- 14. java解析日期:
- 15. 解析JSON日期
- 16. 解析日期NSDateFormatter
- 17. Angular.js日期解析
- 18. Javascript日期解析
- 19. F# - 解析日期
- 20. Haskell日期解析
- 21. 解析日期SimpleDateFormatter
- 22. 我该如何解析Perl的相对日期?
- 23. Java日期不解析日
- 24. 相对日期
- 25. 解析JavaScript中的日期对象
- 26. 对象 - 无法解析的日期
- 27. ParseException:解析日期错误试图从csv解析日期(windows)
- 28. 解析日期例外 - 无法解析日期
- 29. 日期解析。我如何解析这个日期格式?
- 30. JSP解析日期失败:java.text.ParseException:无法解析的日期
'Monday'无需进一步日期参考是在分析器的眼睛没有意义的,因此它被丢弃。哪个星期一?你不会为此编写自己更复杂的解析器。 –
@Not_a_Golfer:过去的第一个星期一,我已经在这个问题中写道:'所以格式是“天(过去)在TIME”。我尝试了下一个例子:' –
是的,但你能告诉解析器吗?不! –