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

时间:2015-10-29 19:19:15

标签: date smalltalk pharo squeak

我正在尝试为Class Date或Class DateAndTime的对象找到一个预定义的方法,它允许我通过提供三个整数来创建一个新的Date(或一个新的DateAndTime):一个月的一个整数(1-31);一个月(1 - 12);和一年四位数的整数。

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

是否有可以一次设置所有三个参数的方法?

2 个答案:

答案 0 :(得分:3)

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

当遇到这样的问题时,您可以浏览本课程Date,并查看instance creation方法的协议。在Pharo中,这个类别有几种方法,但很容易看到(我认为)#year:month:day看起来像个好人。所以,你可以尝试一下。只需评估表达式

Date year: 2015 month: 12 day: 31

看看会发生什么(你可以检查或打印它以查看结果)。

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

答案 1 :(得分:0)

的字符串>> asDate

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

e.g。 (在工作区中)

    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方法中的注释声明"许多允许的表单,请参阅日期>> #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)"

还相关:字符串&gt;&gt; asDateAndTime

n.b。 DateAndTime对象是一个确切的时刻。

日期,年,月,周和时间表都是类Timespan的子类,因此它们都有开始时刻,持续时间和结束时刻。