Why not do this using SQL instead?
I use the date as a variable for this SQL, handled on job level:
INSERT INTO
DIM_DATE
(ID, `YEAR`, `QUARTER`, `MONTH`, `WEEK`, `DAY`, `DATE`, YEAR_NAME, QUARTER_NAME, MONTH_NAME, WEEK_NAME, DAY_NAME)
SELECT
'${DIM_DATE}' AS ID,
YEAR(from_unixtime('${DIM_DATE}')) AS `YEAR`,
((MONTH(from_unixtime('${DIM_DATE}')) + 2) DIV 3) AS `QUARTER`,
MONTH(from_unixtime('${DIM_DATE}')) AS `MONTH`,
WEEK(from_unixtime('${DIM_DATE}')) AS `WEEK`,
DAY(from_unixtime('${DIM_DATE}')) AS `DAY`,
from_unixtime('${DIM_DATE}') AS `DATE`,
YEAR(from_unixtime('${DIM_DATE}')) AS YEAR_NAME,
CONCAT('Q', (MONTH(from_unixtime('${DIM_DATE}')) + 2) DIV 3) AS QUARTER_NAME,
MONTHNAME(from_unixtime('${DIM_DATE}')) AS MONTH_NAME,
CONCAT('Week ', WEEK(from_unixtime('${DIM_DATE}'))) AS WEEK_NAME,
DAYNAME(from_unixtime('${DIM_DATE}')) AS DAY_NAME
ON DUPLICATE KEY UPDATE ID = ID;