The Infamous problem of switch debouncing

Don't use interrupts to detect button presses. A button press is so slow the Arduino should always be able to read it fast enough to not loose that press even if you simply poll inside the loop() routine. And the whole debouncing and press time acquisition is much easier if you don't have to fiddle with interrupt context and it's restrictions.