6
$\begingroup$

DateObjects can be of varying physical dimensions.

CurrentDate[Today, #] & /@ {"Day", "Month", "Year"} 

Mathematica graphics

How do you get the size of a DateObject? I tried AbsoluteOptions[Today] but it returns unevaluated. Ideas?

$\endgroup$
1

3 Answers 3

6
$\begingroup$

Here's a way to do it entirely in the FE (i.e. without a full Rasterize call, which is done in the FE anyway):

getBoxSize[c_Cell] := {#[[1]], Total@#[[2 ;;]]} &@First@ FrontEndExecute@GetBoundingBoxSizePacket[c]; getBoxSize[e_] := getBoxSize[Cell[BoxData@ToBoxes[e]]] getBoxSize@CurrentDate[#] & /@ {"Day", "Month", "Year"} {{148., 25.}, {121., 25.}, {90., 25.}} 

Note that this is much faster than using a raw Rasterize:

getBoxSize@CurrentDate[#] & /@ {"Day", "Month", "Year"} // RepeatedTiming {0.04, {{151., 25.}, {121., 25.}, {90., 25.}}} Rasterize[CurrentDate[#], "RasterSize"] & /@ {"Day", "Month", "Year"} // RepeatedTiming {0.24, {{151, 26}, {121, 26}, {90, 26}}} 
$\endgroup$
8
$\begingroup$

Update

(After the clarification of the question, my original answer was not on target)

An alternative to using ImageDimensions is to use the "RasterSize" property with Rasterize:

dates = CurrentDate[Today,#]& /@ {"Day","Month","Year"}; Rasterize[#, "RasterSize"]& /@ dates 

{{148, 26}, {121, 26}, {90, 26}}

Original answer

You can use DateValue to determine the granularity of a DateObject:

dates = CurrentDate[Today, #] & /@ {"Day", "Month", "Year"}; DateValue[#, "Granularity"]& /@ dates 

{"Day", "Month", "Year"}

$\endgroup$
1
  • $\begingroup$ Thanks. But meant size as in dimensions. Not size as in granularity. Clarified in question. $\endgroup$ Commented Feb 27, 2018 at 15:36
6
$\begingroup$

You can find the size in pixels by using ImageDimensions and Rasterize, like so:

Map[ImageDimensions@*Rasterize, CurrentDate[Today, #] & /@ {"Day", "Month", "Year"}] (* {{148, 26}, {121, 26}, {90, 26}} *) 
$\endgroup$
1
  • $\begingroup$ I am hoping there is a cleaner way than Rasterize. (+1) for now. $\endgroup$ Commented Feb 27, 2018 at 15:39

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.