# How to get the size of a DateObject?

DateObjects can be of varying physical dimensions.

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


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

• – b3m2a1 Feb 27 '18 at 22:02

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}}}


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}}

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

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

DateValue[#, "Granularity"]& /@ dates


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

• Thanks. But meant size as in dimensions. Not size as in granularity. Clarified in question. – Edmund Feb 27 '18 at 15:36

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}} *)

• I am hoping there is a cleaner way than Rasterize. (+1) for now. – Edmund Feb 27 '18 at 15:39