diff --git a/erpnext/www/book_appointment/index.js b/erpnext/www/book_appointment/index.js
index 5a814c6..262e31b 100644
--- a/erpnext/www/book_appointment/index.js
+++ b/erpnext/www/book_appointment/index.js
@@ -24,20 +24,15 @@
 }
 
 function setup_timezone_selector() {
-    /**
-     * window.timezones is a dictionary with the following structure
-     * { IANA name: Pretty name}
-     * For example : { Asia/Kolkata : "India Time - Asia/Kolkata"}
-     */
     let timezones_element = document.getElementById('appointment-timezone');
-    let offset = new Date().getTimezoneOffset();
-    Object.keys(window.timezones).forEach((timezone) => {
+    let local_timezone = moment.tz.guess()
+    window.timezones.forEach(timezone => {
         let opt = document.createElement('option');
         opt.value = timezone;
-        if (timezone == moment.tz.guess()) {
+        if (timezone == local_timezone) {
             opt.selected = true;
         }
-        opt.innerHTML = window.timezones[timezone]
+        opt.innerHTML = timezone;
         timezones_element.appendChild(opt)
     });
 }
diff --git a/erpnext/www/book_appointment/index.py b/erpnext/www/book_appointment/index.py
index e4af7e8..fe98c7a 100644
--- a/erpnext/www/book_appointment/index.py
+++ b/erpnext/www/book_appointment/index.py
@@ -25,18 +25,20 @@
 
 @frappe.whitelist(allow_guest=True)
 def get_timezones():
-	from babel.dates import get_timezone, get_timezone_name, Locale
-	from frappe.utils.momentjs import get_all_timezones
+	import pytz
+	return pytz.all_timezones
+	# from babel.dates import get_timezone, get_timezone_name, Locale
+	# from frappe.utils.momentjs import get_all_timezones
 
-	translated_dict = {}
-	locale = Locale.parse(frappe.local.lang, sep="-")
+	# translated_dict = {}
+	# locale = Locale.parse(frappe.local.lang, sep="-")
 
-	for tz in get_all_timezones():
-		timezone_name = get_timezone_name(get_timezone(tz), locale=locale, width='short')
-		if timezone_name:
-			translated_dict[tz] = timezone_name + ' - ' + tz
+	# for tz in get_all_timezones():
+	# 	timezone_name = get_timezone_name(get_timezone(tz), locale=locale, width='short')
+	# 	if timezone_name:
+	# 		translated_dict[tz] = timezone_name + ' - ' + tz
 
-	return translated_dict
+	# return translated_dict
 
 @frappe.whitelist(allow_guest=True)
 def get_appointment_slots(date, timezone):
