Use arduino to measure and record engine RPM

void rpmtrigger()
{
  oldtime = newtime;
  newtime = millis();

   if (newtime - oldtime > 12)
       {
        rpmcount++;
       }

}

Ok I came up with the code above, but now that I'm thinking about it, I don't think it will work. I think it will just give me a pulse at whatever time I set. I don't think that will work, but do you have any other suggestions? I'm thinking of using analogRead() for something but I haven't come up with a good idea yet.

That code is basically correct. I would use:

volatile bool newPulse = false;
volatile unsigned long lastPulseTime;
volatile unsigned long lastPulseInterval;

void rpmtrigger()
{
  unsigned long now = micros();
  unsigned long pulseInterval = now - lastPulseTime;
  if (pulseInterval > 1000UL)  // I have chosen 1ms as the minimum pulse interval, you may need to adjust it
  {
     lastPulseTime = now;
     lastPulseInterval = pulseInterval;
     newPulse = true;
  }
}

void loop()
{
  unsigned long rpm;
  if (newPulse)
  {
     rpm = 60000000UL/lastPulseInterval;
     newPulse = false;
  } 
  else
  {
    rpm = 0;
  }
  ... print RPM here ...
  delay(200);
}

Ok so in your code, you're measuring the time between pulses, instead of taking the time between multiple pulses and averaging it. Would this be less accurate than the other way?

It's more accurate. If you measure the number of pulses over some time interval, you don't know whether you've just missed an extra pulse. So there is an uncertainty of 60000/t where t is the interval in milliseconds over which you count pulses.

Measuring the interval between pulses avoids this difficulty. The residual uncertainty is down to variation in the interrupt latency. If you want to reduce this effect, you can measure the time interval over N pulses, for some N > 2.