Datetime 时间/日期范围语法
我需要分析包含时间跨度的字符串,例如:Datetime 时间/日期范围语法,datetime,parsing,grammar,timespan,Datetime,Parsing,Grammar,Timespan,我需要分析包含时间跨度的字符串,例如: 星期四上午6:30-7:30 2009年12月30日至2010年1月1日 2009年1月15日,晚上7:30至8:30 星期四,上午6:30至7:30 和其他人 增加 6:30至7:30 和日期/时间,例如Word的insert->date可以生成的大多数情况 如果有任何东西涵盖了我需要涵盖的所有案例,我会非常惊讶,我正在寻找语法作为起点。好的,下面的语法解析了您示例中的任何内容: DTExp = Day, ['-', Day] Da
- 星期四上午6:30-7:30
- 2009年12月30日至2010年1月1日
- 2009年1月15日,晚上7:30至8:30
- 星期四,上午6:30至7:30
- 和其他人
- 6:30至7:30
如果有任何东西涵盖了我需要涵盖的所有案例,我会非常惊讶,我正在寻找语法作为起点。好的,下面的语法解析了您示例中的任何内容:
DTExp = Day, ['-', Day]
Day = DayExp, [[','], ['from'], TimeRange]
DayExp = WeekDay
| [Weekday], Month, DayNumber, [[','], YearNumber]
| [Weekday], MonthNumber, '/', DayNumber, ['/', YearNumber]
TimeRange = Time, [['-'|'to'] Time]
Time = HourNumber, ':', MinuteNumber, ['AM'|'PM']
WeekDay = 'monday' | 'tuesday' | ...
Month = MonthNumber | MonthName
MonthName = 'january' | 'february' | ...
DayNumber = Number
MonthNumber = Number
YearNumber = Number, ['AD'|'BC']
HourNumber = Number
MinuteNumber = Number
语法上有个小问题。如果读取一个DayExp,后跟一个时间和一个“-”,那么您可以期待另一个DayExp或另一个时间。但这可以通过向前看来解决,因为如果是时间,数字后面会跟一个“:”
让我们尝试构造一个解析树:
Thursday 6 : 30 - 7 : 30 AM
| | | | | |
WeekDay Number : Number - Number : Number |
| -----|---- -----|-----------
| Time - Time
| ---------|---------
DayExp TimeRange
----------|-----------
Day
|
DTExp
你是刚生成的还是来自其他来源(链接?)。只是好奇。不,是我创造的。我几乎梦见语法;-)@游戏猫-你需要一个爱好普洛,我已经够了。但我可以在孩子们睡着的时候这样做(至少假装睡着)。其他人太吵了。“1/2/09从6:30到7:30-3/16/10”每个语法都有它的疯狂之处。