How to make battery last for months?
The Arduino UNO always consumes current mainly because:


it has 2 MCU, the ATmega328 which you can power down, and an ATmega16u2 for USB communication which is never powered down. 
in addition, the voltage regulator is permanently leaking some current


To be honest, I am surprised your UNO consumes only 15mA, on my boards, it is rather near 40-50mA.

Also, a 9V battery is probably the battery with the smallest charge capacity.

I would suggest you:


work on a breadboard with just the ATmega328, 
power it with two 1.5V batteries (AA or AAA)
and run @8MHz


That should already reduce current consumption. 

You may even try smaller MCU (e.g. ATtiny84A) which consumes less current than the ATmega328 in the same conditions.

Finally, I highly recommend Nick Gammon's blog on that topic. It includes many good tricks to help you with current consumption.