ここのサイトを元にして求めました。
各地のこよみ(日の出入り、月の出入り、南中時)
分単位だとこんな感じになりました。北海道の日の出はやすぎ。あと、東京もやっぱ早い。
札幌:2012/06/15-2012/06/14 3:54 2012/06/21-2012/07/02 19:18 根室:2012/06/08-2012/06/22 3:37 2012/06/21-2012/07/02 19:02 青森県(青森):2012/06/08-2012/06/20 4:05 2012/06/24-2012/07/01 19:13 秋田県(秋田):2012/06/08-2012/06/20 4:11 2012/06/25-2012/06/30 19:12 岩手県(盛岡):2012/06/08-2012/06/20 4:07 2012/06/20-2012/07/05 19:07 宮城県(仙台):2012/06/12-2012/06/15 4:12 2012/06/22-2012/07/04 19:04 山形県(山形):2012/06/06-2012/06/21 4:15 2012/06/22-2012/07/04 19:06 福島県(福島):2012/06/06-2012/06/21 4:16 2012/06/22-2012/07/04 19:04 鳥取県(鳥取):2012/06/08-2012/06/18 4:47 2012/06/27-2012/06/30 19:23 島根県(松江):2012/06/07-2012/06/19 4:52 2012/06/22-2012/07/05 19:27 岡山県(岡山):2012/06/05-2012/06/21 4:51 2012/06/21-2012/07/07 19:21 広島県(広島):2012/06/09-2012/06/16 4:57 2012/06/27-2012/07/01 19:27 山口県(山口):2012/06/05-2012/06/20 5:02 2012/06/23-2012/07/05 19:30 三重県(津):2012/06/07-2012/06/18 4:40 2012/06/22-2012/07/06 19:11 滋賀県(大津):2012/06/07-2012/06/19 4:42 2012/06/26-2012/07/01 19:15 京都府(京都):2012/06/10-2012/06/16 4:42 2012/06/22-2012/07/05 19:15 大阪府(大阪):2012/06/09-2012/06/16 4:44 2012/06/22-2012/07/06 19:15 兵庫県(神戸):2012/06/04-2012/06/21 4:46 2012/06/21-2012/07/07 19:16 奈良県(奈良):2012/06/06-2012/06/19 4:43 2012/06/24-2012/07/04 19:14 和歌山県(和歌山):2012/06/06-2012/06/19 4:47 2012/06/22-2012/07/06 19:15 新潟県(新潟):2012/06/07-2012/06/20 4:21 2012/06/21-2012/07/05 19:10 富山県(富山):2012/06/06-2012/06/20 4:32 2012/06/23-2012/07/04 19:14 石川県(金沢):2012/06/10-2012/06/16 4:34 2012/06/23-2012/07/03 19:16 福井県(福井):2012/06/05-2012/06/21 4:38 2012/06/22-2012/07/05 19:16 山梨県(甲府):2012/06/09-2012/06/17 4:29 2012/06/25-2012/07/02 19:06 長野県(長野):2012/06/08-2012/06/19 4:28 2012/06/23-2012/07/04 19:10 岐阜県(岐阜):2012/06/08-2012/06/17 4:37 2012/06/22-2012/07/05 19:12 静岡県(静岡):2012/06/07-2012/06/19 4:32 2012/06/21-2012/07/07 19:04 愛知県(名古屋):2012/06/09-2012/06/16 4:37 2012/06/24-2012/07/03 19:11 茨城県(水戸):2012/06/06-2012/06/21 4:20 2012/06/23-2012/07/04 19:00 栃木県(宇都宮):2012/06/11-2012/06/15 4:21 2012/06/23-2012/07/04 19:03 群馬県(前橋):2012/06/09-2012/06/17 4:25 2012/06/25-2012/07/02 19:06 埼玉県(さいたま):2012/06/11-2012/06/15 4:24 2012/06/24-2012/07/03 19:02 千葉県(千葉):2012/06/09-2012/06/17 4:23 2012/06/22-2012/07/06 18:59 東京都:2012/06/05-2012/06/21 4:25 2012/06/23-2012/07/04 19:01 神奈川県(横浜):2012/06/05-2012/06/21 4:26 2012/06/25-2012/07/02 19:01 小笠原:2012/06/05-2012/06/14 4:36 2012/06/27-2012/07/06 18:30 福岡県(福岡):2012/06/04-2012/06/20 5:08 2012/06/26-2012/07/02 19:33 佐賀県(佐賀):2012/06/06-2012/06/19 5:09 2012/06/22-2012/07/06 19:32 長崎県(長崎):2012/06/05-2012/06/18 5:12 2012/06/27-2012/07/02 19:33 熊本県(熊本):2012/06/09-2012/06/14 5:08 2012/06/22-2012/07/07 19:29 大分県(大分):2012/06/04-2012/06/20 5:04 2012/06/24-2012/07/04 19:27 宮崎県(宮崎):2012/06/05-2012/06/18 5:08 2012/06/22-2012/07/07 19:24 鹿児島県(鹿児島):2012/06/06-2012/06/17 5:12 2012/06/24-2012/07/05 19:27 沖繩県(那覇):2012/06/05-2012/06/14 5:36 2012/06/26-2012/07/07 19:26 徳島県(徳島):2012/06/05-2012/06/20 4:50 2012/06/21-2012/07/07 19:17 香川県(高松):2012/06/06-2012/06/18 4:51 2012/06/23-2012/07/05 19:20 愛媛県(松山):2012/06/11-2012/06/13 4:57 2012/06/24-2012/07/04 19:24 高知県(高知):2012/06/07-2012/06/17 4:55 2012/06/23-2012/07/05 19:20
ちなみに、これを求めるJavaコードはこんな感じ。コンパイル・実行にはNekoHTMLからnekohtml.jarとxercesImpl.jarが必要です。
package hinode; import com.sun.org.apache.xpath.internal.XPathAPI; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.xml.transform.TransformerException; import org.cyberneko.html.parsers.DOMParser; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class Hinode { public static void main(String[] args) throws SAXException, IOException, TransformerException { String path = "http://eco.mtk.nao.ac.jp/koyomi/dni/"; DOMParser parser = new DOMParser(); parser.setFeature("http://xml.org/sax/features/namespaces", false); parser.parse(path); Document doc = parser.getDocument(); NodeList linkList = XPathAPI.selectNodeList(doc, "//A"); for(int i = 0; i < linkList.getLength(); ++i){ String link = ((Element)linkList.item(i)).getAttribute("href"); if(!link.startsWith("dni")) continue; Pattern pat = Pattern.compile("dni([0-9]+)\\.html"); Matcher matcher = pat.matcher(link); if(!matcher.matches()){ System.out.println("リンクおかしい"); } String num = matcher.group(1); String minRiseDate = ""; String maxRiseDate = ""; String minSetDate = ""; String maxSetDate = ""; int earlyRise = Integer.MAX_VALUE; String earlyRiseStr = ""; int lateSet = Integer.MIN_VALUE; String lateSetStr = ""; for(int d = 2; d <= 3; ++d){ parser.parse("http://eco.mtk.nao.ac.jp/koyomi/dni/2012/hdni" + num + "12" + d + ".html"); Document data46 = parser.getDocument(); NodeList trList = XPathAPI.selectNodeList(data46, "//TR"); for(int j = 0; j < trList.getLength(); ++j){ String sunrise = trList.item(j).getChildNodes().item(2).getTextContent(); String sunset = trList.item(j).getChildNodes().item(10).getTextContent(); Pattern timePat = Pattern.compile("([0-9]+):([0-9]+)"); Matcher risematcher = timePat.matcher(sunrise.trim()); Matcher setmatcher = timePat.matcher(sunset.trim()); if(!risematcher.matches() || !setmatcher.matches()){ continue; } int rise = Integer.parseInt(risematcher.group(1)) * 60 + Integer.parseInt(risematcher.group(2)); int set = Integer.parseInt(setmatcher.group(1)) * 60 + Integer.parseInt(setmatcher.group(2)); if(earlyRise > rise){ earlyRise = rise; earlyRiseStr = sunrise.trim(); minRiseDate = trList.item(j).getChildNodes().item(0).getTextContent(); }else if(earlyRise == rise){ maxRiseDate = trList.item(j).getChildNodes().item(0).getTextContent(); } if(lateSet < set){ lateSet = set; lateSetStr = sunset.trim(); minSetDate = trList.item(j).getChildNodes().item(0).getTextContent(); }else if(lateSet == set){ maxSetDate = trList.item(j).getChildNodes().item(0).getTextContent(); } } } System.out.printf("%s:%s-%s %s %s-%s %s%n", linkList.item(i).getTextContent(), minRiseDate, maxRiseDate, earlyRiseStr, minSetDate, maxSetDate, lateSetStr); } } }