Hi,
Yes, you are right.
Actually, it is the common way to first scale data to [0, 1], then compute mean and std to get to z-score.
But something I would like to mention is that using z-score does not necessrilty convert your data to [-1, 1]. See below post please:

  
    
    
    Understanding transform.Normalize( ) vision
  
  
    Hi, 
There is main difference here. If you use mean=0.5 and std=0.5, your output value will be between [-1, 1] based on the normalization formula : (x - mean) / std which also called z-score. This score can be out of [-1, 1] when used mean and std of dataset, for instance ImageNet. 
The definition says that we need to use population mean and std but it is usually unavailable, sample mean/std can be used as an estimation.
  


Bests