How accurate does your resulting timestamp need to be? Perhaps you just need a unique number that looks like a timestamp. Add 15 to a valid timestamp and there you have it, e.g. 200604131155 becomes 200604131170 (which of course means 200604131210). Oh, you want minutes to roll to hours to roll to days to roll to months to roll to years? Get ready to write up a bunch of special cases, write incrementing routines for those various flavors, and put them together. Though if what you have above works for you, it looks pretty simple to me.
Quick, another approach: use time to generate what time it is 'now', add 15 minutes worth of seconds to that number, and feed that number back as a parameter to localtime and get the figures you want out of the array.