Date 如何在Smalltalk(Pharo/Squeak)中设置日期或DataAndTime对象的日、月和年值

Date 如何在Smalltalk(Pharo/Squeak)中设置日期或DataAndTime对象的日、月和年值,date,smalltalk,pharo,squeak,Date,Smalltalk,Pharo,Squeak,我试图为类Date或类DateAndTime的对象找到一个预定义的方法,它允许我通过提供三个整数来创建一个新的日期(或一个新的DateAndTime):一个整数表示月份的某一天(1-31);一个月(1-12);和一个四位数的整数 (到目前为止,我找到的最接近的是Integer>>asYear) 是否有一种方法可以同时设置所有三个参数 如果我理解正确,您正在尝试从表示所述日期的天、月和年的三个整数创建日期的实例 当遇到这样的问题时,您可以浏览类,在本例中为Date,并检查其协议中的实例创建方法。在

我试图为类Date或类DateAndTime的对象找到一个预定义的方法,它允许我通过提供三个整数来创建一个新的日期(或一个新的DateAndTime):一个整数表示月份的某一天(1-31);一个月(1-12);和一个四位数的整数

(到目前为止,我找到的最接近的是Integer>>asYear)


是否有一种方法可以同时设置所有三个参数

如果我理解正确,您正在尝试从表示所述日期的
的三个整数创建
日期
的实例

当遇到这样的问题时,您可以浏览类,在本例中为
Date
,并检查其协议中的
实例创建
方法。在Pharo中,这类方法有几种,但很容易看出(我认为)年:月:日看起来是一个很好的候选方法。所以,你可以试试。只需计算表达式

Date year: 2015 month: 12 day: 31
并查看发生了什么(您可以检查或打印它以查看结果)

您还将发现
#newDay:month:year
是另一个很好的候选人。你也可以试试。或者您可以看到它发送了我们之前的消息,因此它只是一个同义词(它的出现是为了与支持Smalltalk-80/ANSI规范的其他方言兼容)。

String>>asDate

允许将日期格式的字符串转换为日期

e、 g.(在工作区中)

String>>asDate方法中的注释说明“许多允许的表单,请参见日期>>#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)"
“以以下任何形式从流中读取日期:
(1982年4月15日;1982年4月15日;1982年4月15日;1982年4月15日)
(1982年4月15日;1982年4月15日)
--(1982-04-15)(ISO8601)
同样相关:字符串>>作为日期和时间

n、 DateAndTime对象是时间上的精确瞬间


Date、Year、Month、Week和Schedule都是Timespan类的子类,因此它们都有开始时刻、持续时间和结束时刻。

这正是我想要的方法,谢谢。我目前正在使用Pharo 1.4更新#14457,通过示例与Pharo进行匹配。不幸的是,它没有日期>>newDay:month:year:method。我的收获是,我将开始在Pharo 4图像中进行探索,只遵循Pharo 1.4中的书现在我更困惑了-Pharo 1.4中的浏览器中没有列出该方法,但对象正确响应它,我可以找到它。因为year:month:day是类方法,而不是实例方法。因为它在类上用于创建具有正确信息的新实例。
"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)"