diff --git wp-admin/css/wp-admin.css wp-admin/css/wp-admin.css
index ebb78cc..e67617f 100644
--- wp-admin/css/wp-admin.css
+++ wp-admin/css/wp-admin.css
@@ -3954,6 +3954,22 @@ abbr.required {
 	bottom: 1px;
 }
 
+#timezone_suggest_working {
+	padding-bottom: 4px;
+	vertical-align: bottom;
+	display: none;
+}
+
+#timezone_suggest_result {
+	display: none;
+	color: #f00;
+}
+
+#timezone_suggest_use {
+	display: none;
+	margin-left: 5px;
+}
+
 ul#dismissed-updates {
 	display: none;
 }
diff --git wp-admin/options-general.php wp-admin/options-general.php
index fdae33a..959945c 100644
--- wp-admin/options-general.php
+++ wp-admin/options-general.php
@@ -50,6 +50,37 @@ function options_general_add_js() {
 					date : format.val()
 				}, function(d) { format.siblings('.spinner').hide(); format.siblings('.example').text(d); } );
 		});
+		$("#timezone_suggest").click(function(){
+			$("#timezone_suggest_working").animate({opacity:'show'},500);
+			$.ajax({
+				type: 'GET',
+				dataType: 'jsonp',
+				url: 'http://api.wordpress.org/core/ip-to-zoneinfo/1.0/',
+				success: function(data){
+					if (data.errorcode) {
+						$("#timezone_suggest_result span").text('<?php echo esc_js(__('Unable to suggest timezone')); ?>');
+					} else {
+						var text = '<?php echo esc_js(__('Based on your IP address, we suggest the %s timezone.')); ?>';
+						text = text.replace('%s', data.timezoneId);
+						$("#timezone_suggest_result span").text(text);
+						$("#timezone_suggest_use").show().click(function () {
+							$("#timezone_string").val(data.timezoneId);
+							$("#timezone_suggest_result").animate({opacity:'hide'}, 2000, function() {
+								$("#timezone_suggest_use").hide();
+							});
+						});
+					}
+					$("#timezone_suggest_working").animate(
+						{opacity:'hide'},
+						500,
+						'linear',
+						function(){
+							$("#timezone_suggest_result").animate({opacity:'show'},1000);
+						}
+					);
+				}
+			});
+ 		});
 	});
 //]]>
 </script>
@@ -66,6 +97,7 @@ if ( ! is_multisite() ) {
 }
 
 $options_help .= '<p>' . __('UTC means Coordinated Universal Time.') . '</p>' .
+	'<p>' . __('The timezone suggest utility is powered by the GeoNames database. <code>api.wordpress.org</code> is used to suggest this timezone, based on your IP. No information is stored as a result of this utility.') . '</p>' .
 	'<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>';
 
 get_current_screen()->add_help_tab( array(
@@ -176,7 +208,12 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
 	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
 <?php endif; ?>
-<p class="description"><?php _e('Choose a city in the same timezone as you.'); ?></p>
+<input id="timezone_suggest" type="button" class="button" value="<?php esc_attr_e('Suggest a time zone'); ?>" />
+<img id="timezone_suggest_working" src="images/wpspin_light.gif" width="16" height="16" /><br />
+<p id="timezone_suggest_result">
+	<span></span><input id="timezone_suggest_use" type="button" class="button" value="<?php esc_attr_e('Use this timezone') ?>" />
+</p>
+<span class="description"><?php _e('WordPress can suggest a time zone for you based on your computers IP address, or you may manually select a city in the same time zone as you.'); ?></span>
 <?php if ($check_zone_info && $tzstring) : ?>
 <br />
 <span>
