AttachInterrupt after one second of holding button

uint32_t begin_time = millis();
while(true)
{
    if (digitalRead(interruptpin) == HIGH )
    {
        begin_time = millis();
        attachInterrupt(int, whatever, LOW);
        SLEEP_MODE_PWR_DOWN;
    }
    if( millis() - begin_time > 1000 )
        break;
}

The only this the whatever ISR should do is detachInterrupt.

Untested, but I was actually thinking about a similar thing a couple weeks ago. This is the method I came up with. Obviously will not compile as is, you will have to substitute in actual code for the parts I've shorthanded.