A controller of an internal combustion engine having a function of sensing times necessary for rotation of unit angles of a crankshaft of the engine based on an output of a crank angle sensor that senses sensed portions provided at equal intervals of the unit angles on a rotating body rotating in synchronization with rotation of the crankshaft, the controller comprising: a first necessary time sensing device ( S46, S58) that is configured to sense a first necessary time necessary for rotation of an arbitrary angular range of the crankshaft; a second necessary time sensing device ( S42, S54) that is configured to sense a second necessary time necessary for rotation of an angular range different from the arbitrary angular range; a unit necessary time sensing device ( S40, S52) that is configured to sense a plurality of unit necessary times necessary for rotation of the unit angles in the angular range different from the arbitrary angular range; and an estimating device ( S44, S46, S48, S56, S58, S60) that is configured to estimate times necessary for rotation of the unit angles in the arbitrary angular range by converting the unit necessary times into equivalents of the times necessary for the rotation of the unit angles in the arbitrary angular range based on a difference between the first necessary time and the second necessary time, wherein the engine is a multi-cylinder internal combustion engine, the controller is set such that a relationship between the different angular range and an operation step of a certain cylinder coincides with a relationship between the arbitrary angular range and the operation step of the certain cylinder or an operation step of a different cylinder, the different angular range is distant from the arbitrary angular range by a crank angle provided by dividing 720 °CA by an integer value, and the integer value is the number of cylinders of the multi-cylinder internal combustion engine. a first necessary time sensing device ( S46, S58) that is configured to sense a first necessary time necessary for rotation of an arbitrary angular range of the crankshaft; a second necessary time sensing device ( S42, S54) that is configured to sense a second necessary time necessary for rotation of an angular range different from the arbitrary angular range; a unit necessary time sensing device ( S40, S52) that is configured to sense a plurality of unit necessary times necessary for rotation of the unit angles in the angular range different from the arbitrary angular range; and an estimating device ( S44, S46, S48, S56, S58, S60) that is configured to estimate times necessary for rotation of the unit angles in the arbitrary angular range by converting the unit necessary times into equivalents of the times necessary for the rotation of the unit angles in the arbitrary angular range based on a difference between the first necessary time and the second necessary time, wherein the engine is a multi-cylinder internal combustion engine, the controller is set such that a relationship between the different angular range and an operation step of a certain cylinder coincides with a relationship between the arbitrary angular range and the operation step of the certain cylinder or an operation step of a different cylinder, the different angular range is distant from the arbitrary angular range by a crank angle provided by dividing 720 °CA by an integer value, and the integer value is the number of cylinders of the multi-cylinder internal combustion engine.