Wake up Arduino at certain time on a certain day from sleep

How should I use ds3231 rtc with Arduino to wake it up at a certain time on a certain date so that my power consumption is low

You can program the DS3231 to pull INT low at a specified time. Connect that to any interrupt on the Arduino and put it to sleep. It will wake up at the programmed time.

You can use a low cost PCF8563 RTC module and some other components to reduce a projects battery consumption to less than 0.001uA, its controlled via I2C, here is a prototype;

More details here;

http://www.loratracker.uk/?p=633