before your question can be answered, you have to specify why you want data integrity in the first place: protecting against accidental changes is a very different thing than protecting against adversary modification. You need also to specify in what context that validation takes place: how does the validating actor knows what the proper checksum should be.
I would like to use some fields such as file size, and creation date in hashing. Is that possible or safe way for hashing?
Generally speaking, no: that does not give you much meaningful information.
These elements are called metadata: it's data about data and it's, well, a different set of data on it's own. When you read it, you implicitely trust the storage medium (file system) to provide you with accurate information. This is an assumption that is simply wrong even if you're only attempting to protect against accidental changes (not falsification).
In very limited, specific cases it could be useful: For instance, if you have a log file created on a secure server, you could use the file size/last write date to know when the file has changed and therefore know if you need to re parse it. But this implies that the information is correct, up-to-date and that you have an earlier state to compare it with.
In a more general way
As Steffen hinted, hashing can actually be very fast: you need to read the file only once and, unless you're working with very limited resources (embedded systems, etc.) the delay introduced by the hashing process itself should be minimal and way smaller than the IO operation itself in most cases (unless you're operating strictly from memory). As always, the devil is in the details: you didn't provide any information about what you intended to do so there is no way to provide a more useful answer.