Let's say I claim I've had X Monero for 1 year in my account and truth is I just received that amount X to my account yesterday. If I'm giving away all (private) keys to that person, he could see the date when my funds actually arrived, right? Could I somehow fake that date? Would using an cold-storage account help?
No, this is not possible.
Knowledge of the private keys for a wallet will identify the specific outputs on the blockchain owned by the wallet. The blockchain holds an immutable record of the creation timestamps of those outputs.
The closest thing to what you're looking to achieve is to send the funds from your wallet to the other person's wallet. Monero's ring signature will obfuscate the actual outputs on the blockchain that you're spending. If your ring size is 7, then for each real output you're spending, there are 6 other outputs your transaction will reference that you could have been spending instead. Therefore the timestamps of the outputs being spent could be the timestamps of any of those 7 outputs.
To fake a particular timestamp for the outputs you're claiming to spend, you'd therefore need to ensure that for each real output you're spending, your transaction's ring signature references a decoy output that has the timestamp you wish to fake. This would require manual construction of your transaction so that you can directly specify which outputs to use as decoys. This is a feature that does not yet exist, so you'd need to make modifications to your wallet software to do this.
Of course, this method falls apart if they simply ask you for the wallet view key for the outputs you claim to originally have received. You'd have to claim you lost it after sending them the funds...