I have an application that runs the old version of the spring application. The application has the function to create date objects using Date.parse as follows
Date getCstTimeZoneDateNow() {
  String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
  def zonedDateString = new Date().format(dateFormat, TimeZone.getTimeZone('CST'))
  Date date = Date.parse(dateFormat, zonedDateString)
  return date // Tue Oct 18 20:36:12 EDT 2022 (in Date)
}
However, the code above is deprecated. I need to produce the same result.
I read other posts and it seems like Calender or SimpleDateFormatter is preferred.
And I thought SimpleDateFormatter has more capabilities.
This post helped me understand more about what is going on in the following code SimpleDateFormat parse loses timezone
Date getCstTimeZoneDateNow() {
  Date now = new Date()
  String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
  SimpleDateFormat sdf = new SimpleDateFormat()
  sdf.setTimeZone(TimeZone.getTimeZone('CST'))
  // cstDateTime prints times in cst
  String cstDateTime = sdf.format(now)  // 2022-10-18T20:36:12.088Z (in String)
  // JVM current time
  Date date = sdf.parse(cstDateTime) // Tue Oct 18 21:36:12 EDT 2022 (in Date)
  return date 
}
Here my goal is to return the date object that is in the format of Tue Oct 18 20:36:12 EDT 2022
The format is good. However, like the post says, when I do sdf.parse(), it prints in JVM time.
This means, the format is good but the time zone is off.
How can I get the exact same result as before?
It does not have to use SimpleDateFormatter. Could be anything.
Thank you so much for reading and for your time.
 
    