nLockTime is a parameter that can be attached to a transaction, that mandates a minimal time (specified in either unix time or block height), that before this time, the transaction cannot be accepted into a block.
nLockTime allows users to lock a transaction's validity until a future block height or UTC timestamp is reached. In theory this allows users to send Bitcoin transactions in the form of a basic time delay trust, with the Blockchain serving as the trustee. The system implemented does not allow for transactions containing a future nLockTime to be mined into a block until the lock time passes – the transaction will be forgotten in mempools and the user has to hold on to it themselves. Due to miners not including this type of transaction into a block, a user can spend the inputs of the locked transaction with a non-time-locked transactions, effectively making the recipient of the locked transaction the victim of a double spend attack.
See also lock_time in the protocol specification
This tag is deprecated and OP CHECKLOCKTIMEVERIFY is the suggested replacement.