(Redirected from Current () (block))

Current ()
current [year v]
Category Sensing
Type Reporter
Introduced in v147 (2.0 alpha)
The options in Current ().

The Current () block is a Sensing block and a reporter block. It reports either the current local year, month (1-12), date (1-31), day of the week (1=Sunday-7=Saturday), hour (0-23), minute (0-59), or second (0-59), depending on the argument. The block gets the data based on the user's device's clock and it uses 24-hour time.

It is one of the two date/time blocks added in Scratch 2.0. The other is Days Since 2000, which reports the number of days since January 1, 2000.

It was originally called (local [ v]:: sensing) until v153 of Scratch 2.0, when it was renamed to (current [ v]:: sensing).

Example Uses

This block can be used in some of the following ways:

  • Creating a clock or calendar
when gf clicked
set [calendar v] to (join (current [month v]) (join [/] (join (current [date v]) (join [/] (current [year v])))))
forever
if <<(current [minute v])<[10]> and <(current [second v])<[10]>> then
say (join (current [hour v]) (join [:0] (join (current [minute v]) (join [:0] (current [second v])))))
else
if <(current [minute v])<[10]> then
say (join (current [hour v]) (join [:0] (join (current [minute v]) (join [:] (current [second v])))))
else
if <(current [second v])<[10]> then
say (join (current [hour v]) (join [:] (join (current [minute v]) (join [:0] (current [second v])))))
else
say (join (current [hour v]) (join [:] (join (current [minute v]) (join [:] (current [second v])))))
  • Changing the background the as the day goes
when gf clicked
forever
if <<(current [hour v]) > [5]> and < (current [hour v]) < [12]>>  then // You can use any range of hours you feel that qualify as morning.  This is 6-11 o'clock.
switch backdrop to (Morning v)
else
if <<(current [hour v]) > [11]> and < (current [hour v]) < [18]>>  then // You can use any range of hours you feel that qualify as afternoon.  This is 12 - 17 o'clock.
switch backdrop to (Afternoon v)
else
switch backdrop to (Night v) // These hours are based on the previous hours.  This is 18 - 5 o'clock.
end
end
if <<(current [minute v])<[10]> and <(current [second v])<[10]>> then
say (join (current [hour v]) (join [:0] (join (current [minute v]) (join [:0] (current [second v])))))
else
if <(current [minute v])<[10]> then
say (join (current [hour v]) (join [:0] (join (current [minute v]) (join [:] (current [second v])))))
else
if <(current [second v])<[10]> then
say (join (current [hour v]) (join [:] (join (current [minute v]) (join [:0] (current [second v])))))
else
say (join (current [hour v]) (join [:] (join (current [minute v]) (join [:] (current [second v])))))
  • Making something unavailable before or after a certain date
if <(current [year v]) < [2019]> then
  change [points v] by (1000)
else
  say [Sorry, but this feature is unavailable after 2018.]
end
  • Timestamps on a high-score list
if <(current [minute v])<[10]> then
add (join (join (join (join (join (join (join [Day:](current [date v]))[ ])(current [hour v]))[:0])(current [minute v]))[|Highscore:])(Score)) to [Highscores List v]
else
add (join (join (join (join (join (join (join [Day:](current [date v]))[ ])(current [hour v]))[:])(current [minute v]))[|Highscore:])(Score)) to [Highscores List v]
Note Note: When the output is less than 10, the hour, minute, and second blocks will report a single-digit unpadded number instead of a double-digit number, e.g. 05:09:03 will appear as 5:9:3.

This can be corrected with the following script:

if <(current [hour v]) < [10]> then
set [hour v] to (join [0] (current [hour v]))
else
set [hour v] to (current [hour v])
end
if <(current [minute v]) < [10]> then
set [minute v] to (join [0] (current [minute v]))
else
set [minute v] to (current [minute v])
end
if <(current [second v]) < [10]> then
set [second v] to (join [0] (current [second v]))
else
set [second v] to (current [second v])
end
say (join (hour) (join [:] (join (minute) (join [:] (second)))))

Workaround

The workaround used in Scratch 1.x is like this:

when gf clicked
reset timer
set [hour v] to []
set [minute v] to []
set [second v] to []
repeat until <<(hour)>[-1]> and <(hour)<[24]>>//hour>0 and hour<13 for 12hr clock
ask [What hour is it?] and wait
set [hour v] to (answer)
end
repeat until <<(minute)>[-1]> and <(minute)<[60]>>
ask [What minute is it?] and wait
set [minute v] to (answer)
end
reset timer
forever
set [second v] to (round ((timer)-(0.5)))//there was no floor or ceiling in scratch 1.x
if <(second)>[59]> then
reset timer
change [minute v] by (1)
end
if <(minute)>[59]> then
set [minute v] to [0]
change [hour v] by (1)
end
if <(hour)>[23]> then//hour>12 for 12hr clock
set [hour v] to [0]//set hour to 1 for 12hr clock
end

See Also

Cookies help us deliver our services. By using our services, you agree to our use of cookies.