To avoid the millis reset problem you could do something like this:
#define BOUNCE_DURATION 20 // define an appropriate bounce time in ms for your switches
volatile unsigned long bounceTime=0; // variable to hold ms count to debounce a pressed switch
void intHandler(){
// this is the interrupt handler for button presses
// it ignores presses that occur in intervals less then the bounce time
if (abs(millis() - bounceTime) > BOUNCE_DURATION)
{
// Your code here to handle new button press ?
bounceTime = millis(); // set whatever bounce time in ms is appropriate
}
}