如何在 Smalltalk (Pharo / Squeak) 中为 Date 或 DataAndTime 对象设置年月日值
How to set day month and year values for a Date or DataAndTime object in Smalltalk (Pharo / Squeak)
我正在尝试为 Class 日期或 Class DateAndTime 的对象找到一个预定义的方法,它允许我通过提供三个来创建一个新的日期(或一个新的 DateAndTime)整数:一个整数代表一个月中的第几天 (1-31);一个月 (1 - 12);以及代表年份的四位整数。
(目前我找到的最接近的是 Integer>>asYear )
有没有一种方法可以一次设置所有三个参数?
如果我对你的理解是正确的,你正试图从代表上述日期的 day
、month
和 year
的三个整数创建 Date
的实例。
当遇到这样的问题时,您可以浏览 class、Date
(在本例中),并检查其协议中的 instance creation
方法。在 Pharo 中,这个类别中有几种方法,但很容易看到(我认为)#year:month:day
看起来是一个很好的候选者。所以,你可以试试看。只需计算表达式
Date year: 2015 month: 12 day: 31
看看会发生什么(您可以检查或打印它以查看结果)。
您还会发现 #newDay:month:year
是另一个不错的候选人。你也可以试试。或者你可以看到它发送了我们之前的消息,因此它只是一个同义词(存在是为了与支持 Smalltalk-80/ANSI 规范的其他方言兼容)。
字符串>>asDate
允许将日期格式的字符串转换为日期
例如(在工作区中)
aDateString := String new . " prints as '' "
aDateString := '1984-11-03' . " prints as '1984-11-03' "
aDate := Date new . " prints as 1 January 1901 "
aDate := aDateString asDate . "prints as 3 November 1984"
String>>asDate 方法中的注释表明 "Many allowed forms, see Date>>#readFrom:"
日期>>readFrom: 说
"Read a Date from the stream in any of the forms:
<day> <month> <year> (15 April 1982; 15-APR-82; 15.4.82; 15APR82)
<month> <day> <year> (April 15, 1982; 4/15/82)
<year>-<month>-<day> (1982-04-15) (ISO8601)"
也相关:String>>asDateAndTime
n.b。 DateAndTime 对象是一个精确的瞬间。
Date、Year、Month、Week 和 Schedule 都是 Class Timespan 的子类,因此它们都有开始时刻、持续时间和结束时刻。
我正在尝试为 Class 日期或 Class DateAndTime 的对象找到一个预定义的方法,它允许我通过提供三个来创建一个新的日期(或一个新的 DateAndTime)整数:一个整数代表一个月中的第几天 (1-31);一个月 (1 - 12);以及代表年份的四位整数。
(目前我找到的最接近的是 Integer>>asYear )
有没有一种方法可以一次设置所有三个参数?
如果我对你的理解是正确的,你正试图从代表上述日期的 day
、month
和 year
的三个整数创建 Date
的实例。
当遇到这样的问题时,您可以浏览 class、Date
(在本例中),并检查其协议中的 instance creation
方法。在 Pharo 中,这个类别中有几种方法,但很容易看到(我认为)#year:month:day
看起来是一个很好的候选者。所以,你可以试试看。只需计算表达式
Date year: 2015 month: 12 day: 31
看看会发生什么(您可以检查或打印它以查看结果)。
您还会发现 #newDay:month:year
是另一个不错的候选人。你也可以试试。或者你可以看到它发送了我们之前的消息,因此它只是一个同义词(存在是为了与支持 Smalltalk-80/ANSI 规范的其他方言兼容)。
字符串>>asDate
允许将日期格式的字符串转换为日期
例如(在工作区中)
aDateString := String new . " prints as '' "
aDateString := '1984-11-03' . " prints as '1984-11-03' "
aDate := Date new . " prints as 1 January 1901 "
aDate := aDateString asDate . "prints as 3 November 1984"
String>>asDate 方法中的注释表明 "Many allowed forms, see Date>>#readFrom:"
日期>>readFrom: 说
"Read a Date from the stream in any of the forms:
<day> <month> <year> (15 April 1982; 15-APR-82; 15.4.82; 15APR82)
<month> <day> <year> (April 15, 1982; 4/15/82)
<year>-<month>-<day> (1982-04-15) (ISO8601)"
也相关:String>>asDateAndTime
n.b。 DateAndTime 对象是一个精确的瞬间。
Date、Year、Month、Week 和 Schedule 都是 Class Timespan 的子类,因此它们都有开始时刻、持续时间和结束时刻。