转换指定 Pharo 8 中模式的日期字符串

Convert a date string specifying the pattern in Pharo 8

'04/30/2019' asDate 有效,但 '30/04/2019' asDate 失败,因为此日期的日期格式为 'dd/MM/yyyy' 格式。

如何在 Pharo 8 中指定不同的时间格式?

有几种方法可以从 String 得到 Date。在你的情况下,一个可行的是以下

   Date readFrom: '30/4/2019' readStream pattern: 'dd/m/yyyy'

模式中的'm'也将匹配两位数的月份索引。如果您使用 'mm' 而不是您的月份索引必须有两位数,例如 '04'.

DateAnTime 没有相似之处。但是您可以执行以下操作:

   | stream |
   stream := '30/4/2019 18:11:03' readStream.
   date := Date readFrom: (stream upTo: $ ) readStream pattern: 'dd/m/yyyy'.
   time := Time readFrom: stream.
   ^DateAndTime date: date time: time.

这使用流的第一部分(直到 space)作为日期,然后继续使用时间。请注意,流留在 space 旁边的字符处,这应该是时间开始的位置。