- 浏览: 3553466 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38247
-
Cordova 3.x入门...
浏览量:607654
-
常用Java开源Libra...
浏览量:682869
-
搭建 CentOS 6 服...
浏览量:89577
-
Spring Boot 入...
浏览量:402165
-
基于Spring Secu...
浏览量:69772
-
MQTT入门
浏览量:91866
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
原文提供了VBA、JavaScript、C、C#、Ruby等语言的日本红日子的逻辑实现。http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm
以下是Java的实现版本:
以下是Java的实现版本:
/* この Java(J2SE1.4) 用祝日判定コードは、下記ウェブサイトで 公開されているのVBA用のコードを元に、主にJavascript版と C言語版を参考にして 阿蛭 栄一( ttp://www.age.ne.jp/x/abiru/index.html )が 編集移植しました。 */ /*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ _/ CopyRight(C) K.Tsunoda(AddinBox) 2001 All Rights Reserved. _/ ( http://www.h3.dion.ne.jp/~sakatsu/index.htm ) _/ _/ この祝日マクロは『kt関数アドイン』で使用しているものです。 _/ このロジックは、レスポンスを第一義として、可能な限り少ない _/ 【条件判定の実行】で結果を出せるように設計してあります。 _/ この関数では、2003年施行の改正祝日法までをサポートして _/ います(9月の国民の休日を含む)。 _/ _/ (*1)このマクロを引用するに当たっては、必ずこのコメントも _/ 一緒に引用する事とします。 _/ (*2)他サイト上で本マクロを直接引用する事は、ご遠慮願います。 _/ 【 http://www.h3.dion.ne.jp/~sakatsu/holiday_logic.htm 】 _/ へのリンクによる紹介で対応して下さい。 _/ (*3)[ktHolidayName]という関数名そのものは、各自の環境に _/ おける命名規則に沿って変更しても構いません。 _/ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/*/ import java.util.Calendar; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; import java.text.ParseException; public class KtHoliday{ private KtHoliday(){ } private static final Calendar cstImplementTheLawOfHoliday = new GregorianCalendar( 1948, Calendar.JULY, 20 ); // 祝日法施行 private static final Calendar cstAkihitoKekkon = new GregorianCalendar( 1959, Calendar.APRIL, 10 ); // 明仁親王の結婚の儀 private static final Calendar cstShowaTaiso = new GregorianCalendar( 1989, Calendar.FEBRUARY, 24 );// 昭和天皇大喪の礼 private static final Calendar cstNorihitoKekkon = new GregorianCalendar( 1993, Calendar.JUNE, 9 );// 徳仁親王の結婚の儀 private static final Calendar cstSokuireiseiden = new GregorianCalendar( 1990, Calendar.NOVEMBER, 12 );// 即位礼正殿の儀 private static final Calendar cstImplementHoliday = new GregorianCalendar( 1973, Calendar.APRIL, 12 );// 振替休日施行 // [prmDate]には "yyyy/m/d"形式の日付文字列を渡す public static String getHolidayName( String prmDate ) throws ParseException { String HolidayName_ret = ""; SimpleDateFormat formatter = new SimpleDateFormat ( "yyyy/MM/dd" ); Calendar MyDate = Calendar.getInstance(); MyDate.setTime( formatter.parse( prmDate ) ); String HolidayName = prvHolidayChk( MyDate ); if ( HolidayName == "" ) { if ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.MONDAY ) { // 月曜以外は振替休日判定不要 if ( MyDate.after( cstImplementHoliday ) || MyDate.equals( cstImplementHoliday ) ) { Calendar YesterDay = (Calendar )MyDate.clone(); YesterDay.add( Calendar.DATE, -1 ); HolidayName = prvHolidayChk( YesterDay ); HolidayName_ret = ""; if ( HolidayName != "" ) { HolidayName_ret = "振替休日"; } else { HolidayName_ret = ""; } } else { HolidayName_ret = ""; } } else { HolidayName_ret = ""; } } else { HolidayName_ret = HolidayName; } return HolidayName_ret; } //=============================================================== private static String prvHolidayChk( Calendar MyDate ) { int NumberOfWeek; String Result; int MyYear = MyDate.get( Calendar.YEAR ); int MyMonth = MyDate.get( Calendar.MONTH ) + 1; // MyMonth:1~12 int MyDay = MyDate.get( Calendar.DATE ); if ( MyDate.before( cstImplementTheLawOfHoliday ) ) { return ""; // 祝日法施行(1948/7/20 )以前 } else; Result = ""; switch ( MyMonth ) { // 1月 // case 1: if ( MyDay == 1 ) { Result = "元日"; } else { if ( MyYear >= 2000 ) { NumberOfWeek = ( (MyDay - 1 ) / 7 ) + 1; if ( ( NumberOfWeek == 2 ) && ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.MONDAY ) ) { Result = "成人の日"; } else; } else { if ( MyDay == 15 ) { Result = "成人の日"; } else; } } break; // 2月 // case 2: if ( MyDay == 11 ) { if ( MyYear >= 1967 ) { Result = "建国記念の日"; } else; } else { if ( MyDate.equals( cstShowaTaiso ) ) { Result = "昭和天皇の大喪の礼"; } else; } break; // 3月 // case 3: if ( MyDay == prvDayOfSpringEquinox( MyYear ) ) { // 1948~2150以外は[99] Result = "春分の日"; // が返るので、必ず≠になる } else; break; // 4月 // case 4: if ( MyDay == 29 ) { if ( MyYear >= 1989 ) { Result = "みどりの日"; } else { Result = "天皇誕生日"; } } else { if ( MyDate.equals( cstAkihitoKekkon ) ) { Result = "皇太子明仁親王の結婚の儀";// ( =1959/4/10 ) } else; } break; // 5月 // case 5: if ( MyDay == 3 ) { Result = "憲法記念日"; } else { if ( MyDay == 4 ) { if ( MyDate.get( Calendar.DAY_OF_WEEK ) > Calendar.MONDAY ) { // 5/4が日曜日は『只の日曜』、月曜日は『憲法記念日の振替休日』 if ( MyYear >= 1986 ) { Result = "国民の休日"; } else; } else; } else { if ( MyDay == 5 ) { Result = "子供の日"; } else; } } break; // 6月 // case 6: if ( MyDate.equals( cstNorihitoKekkon ) ) { Result = "皇太子徳仁親王の結婚の儀"; } else; break; // 7月 // case 7: if ( MyYear >= 2003 ) { NumberOfWeek = ( (MyDay - 1 ) / 7 ) + 1; if ( ( NumberOfWeek == 3 ) && ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.MONDAY ) ) { Result = "海の日"; } else; } else { if ( MyYear >= 1996 ) { if ( MyDay == 20 ) { Result = "海の日"; } else; } else; } break; // 9月 // case 9: //第3月曜日( 15~21 )と秋分日(22~24 )が重なる事はない int MyAutumnEquinox = prvDayOfAutumnEquinox( MyYear ); if ( MyDay == MyAutumnEquinox ) { // 1948~2150以外は[99] Result = "秋分の日"; // が返るので、必ず≠になる } else { if ( MyYear >= 2003 ) { NumberOfWeek = ( (MyDay - 1 ) / 7 ) + 1; if ( (NumberOfWeek == 3 ) && ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.MONDAY ) ) { Result = "敬老の日"; } else { if ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.TUESDAY ) { if ( MyDay == ( MyAutumnEquinox - 1 ) ) { Result = "国民の休日"; } else; } else; } } else { if ( MyYear >= 1966 ) { if ( MyDay == 15 ) { Result = "敬老の日"; } else; } else; } } break; // 10月 // case 10: if ( MyYear >= 2000 ) { NumberOfWeek = ( ( MyDay - 1 ) / 7 ) + 1; if ( (NumberOfWeek == 2 ) && ( MyDate.get( Calendar.DAY_OF_WEEK ) == Calendar.MONDAY ) ) { Result = "体育の日"; } else; } else { if ( MyYear >= 1966 ) { if ( MyDay == 10 ) { Result = "体育の日"; } else; } else; } break; // 11月 // case 11: if ( MyDay == 3 ) { Result = "文化の日"; } else { if ( MyDay == 23 ) { Result = "勤労感謝の日"; } else { if ( MyDate.equals( cstSokuireiseiden ) ) { Result = "即位礼正殿の儀"; } else; } } break; // 12月 // case 12: if ( MyDay == 23 ) { if ( MyYear >= 1989 ) { Result = "天皇誕生日"; } else; } else; break; } return Result; } //=================================================================== // 春分/秋分日の略算式は // 『海上保安庁水路部 暦計算研究会編 新こよみ便利帳』 // で紹介されている式です。 private static int prvDayOfSpringEquinox( int MyYear ) { int SpringEquinox_ret; if ( MyYear <= 1947 ) { SpringEquinox_ret = 99; //祝日法施行前 } else { if ( MyYear <= 1979 ) { SpringEquinox_ret = (int)( 20.8357 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1983 ) / 4 ) ); } else { if ( MyYear <= 2099 ) { SpringEquinox_ret = (int)( 20.8431 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1980 ) / 4 ) ); } else { if ( MyYear <= 2150 ) { SpringEquinox_ret = (int)( 21.851 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1980 ) / 4 ) ); } else { SpringEquinox_ret = 99; //2151年以降は略算式が無いので不明 } } } } return SpringEquinox_ret; } //===================================================================== private static int prvDayOfAutumnEquinox( int MyYear ) { int AutumnEquinox_ret; if ( MyYear <= 1947 ) { AutumnEquinox_ret = 99; //祝日法施行前 } else { if ( MyYear <= 1979 ) { AutumnEquinox_ret = (int)( 23.2588 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1983 ) / 4 ) ); } else { if ( MyYear <= 2099 ) { AutumnEquinox_ret = (int)( 23.2488 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1980 ) / 4 ) ); } else { if ( MyYear <= 2150 ) { AutumnEquinox_ret = (int)( 24.2488 + ( 0.242194 * ( MyYear - 1980 ) ) - (int)( (MyYear - 1980 ) / 4 ) ); } else { AutumnEquinox_ret = 99; //2151年以降は略算式が無いので不明 } } } } return AutumnEquinox_ret; } /*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ _/ _/ ここから先は、阿蛭栄一が独自に追加したコーディングです。 _/ Thu, 18 Dec 2003 02:25:27 +0900 _/ abiru@home.104.net _/ _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ */ //===================================================================== /*このメソッドは、引数にjava.util.Calendarを取るgetHolidayNameメソッドです。 単にCalendarオブジェクトから"yyyy/MM/dd"形式の文字列を組み立てて getHolidayName( String prmDate )の方のメソッドを呼び出しているだけですが、 他のアプリケーションからこのクラスを使う時のことを考慮するとString ではなく、Calendarを引数に取るメソッドがあった方が便利ですよね?*/ public static String getHolidayName( Calendar prmDate ) throws ParseException { SimpleDateFormat f = new SimpleDateFormat ( "yyyy/MM/dd" ); return getHolidayName( f.format( prmDate.getTime() ) ); } //===================================================================== /*このメソッドは動作確認やデバッグ用に用意したメソッドです。 通常は利用しませんので不要な場合には削除して頂いて結構です。 使い方は以下の通りです。 java KtHoliday 1948/01/01 2050/12/30 */ public static void main( String args[] ) throws Exception { SimpleDateFormat f = new SimpleDateFormat ( "yyyy/MM/dd" ); Calendar current = new GregorianCalendar(); current.setTime( f.parse( args[0] ) ); Calendar end = new GregorianCalendar(); end.setTime( f.parse( args[1] ) ); String result = ""; while( current.before( end ) || current.equals( end ) ){ result = getHolidayName( current ); if( !result.equals( "" ) ){ System.out.print( f.format( current.getTime() ) ); System.out.println( ",\"" + result + "\"" ); } current.add( Calendar.DATE , 1 ); } } }
- KtHoliday.rar (3.4 KB)
- 下载次数: 2
发表评论
-
Web API分页
2018-11-13 13:38 1576(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1797JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1690(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 2051SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1723Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7904全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1320样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 1048基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1338Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7634先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1704基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2423Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22589熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7845Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11596JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2878GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 27091关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6595CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2993在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16221Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
描述中的内容与标题相呼应,再次强调了软件的易用性和其针对日本红日子(公众假期)和休息日的实用性。 在了解这款日历软件之前,我们需要知道一些基础概念: 1. **日语支持**:对于日本用户来说,软件提供日语...
总的来说,日本第五代计算机是计算机历史上一个重要的里程碑,它标志着计算机技术从单纯的数值计算向智能化、人性化方向转变的开始。虽然在商业市场上并未取得预期的成功,但其在技术上的探索和创新,对后续计算机...
日本的齿轮计算软的页面,想做该种软件时借借一下,如涉及到侵权,请联系删除, 不得用于任何商业胖用途
《日本计算机专业概况及就业前景分析》 日本作为全球科技领域的先进国家,其计算机专业教育与产业发展具有极高的水平和深远影响。这篇文章将深入探讨日本的计算机专业教育现状,以及毕业生在就业市场上的前景。 一...
日本计算机专业计算机专业发展、危机与对策站在普通.doc
日本地图资源概览 japan国地图概览: 日本国地图是指日本国内的地图,展示了日本的疆域、行政区划、地形、交通网络等信息。根据地图的类型不同,可以分为政治地图、交通地图、旅游地图、历史地图等。在日本,地图...
例如,如果是在监测自然灾害(如地震、台风)的项目中,摄像头可以捕捉现场图像,通过物联网设备发送到计算平台,MATLAB程序则负责处理这些图像,快速识别出潜在的危险信号。 此外,文件"license.txt"可能是MATLAB...
日本的行政区划是其国家行政组织结构的一种划分方式,它涉及到日本全国的各个地区,包括都、道、府、县以及市、町、村等不同级别的行政单位。在这个"日本政区划地图.zip"压缩包中,我们主要关注的是日本的地理与行政...
标题中的“日本地图数据”指的是一个包含日本地理信息的数据集,这个数据集涵盖了日本全国47个都道府县的详细地图信息。这样的数据通常用于地理信息系统(GIS)或者数据分析,以便于绘制热力图或其他可视化表现形式...
2.5模数以下小螺伞计算,包括刀具计算。
它由中国计算机学会与中国科学院计算技术研究所主办、科学出版社出版,以中文编辑形式与读者见面,同时以英文摘要形式向国际各大检索系统提供基本内容介绍。《计算机学报》始创于1978年,刊期为月刊。 《计算机学报...
日本历液面计与叶片生物量甲酸方面的研究方法与计算的初步研究,方法值得借鉴
5. **日本**:由于这个组件是针对日本市场的,因此可能需要适应日本的日期格式和节假日。 【压缩包子文件的文件名称列表】: 1. **html.html**:这可能是包含日历组件HTML结构的文件,其中可能包含了日历的容器元素...
MachBSD 结合了BSD的易用性和Mach的高性能,尤其在并行计算和实时系统方面表现出色。 3. **Red Hat Enterprise Linux (RHEL)** 虽然RHEL并非日本原创,但其在日本有着广泛的用户基础和社区支持。RHEL是一款企业级...
"日本经济发展史" 日本经济发展史可以分为两个阶段:从明治维新到二战结束,和战后经济复兴。 从明治维新到二战结束(1868-1945年) 在明治维新后,日本建立了强有力的中央集权国家,开始将赶超西方强国、推进...
齿轮公法线计算用表格,简洁快速,计算各种标准及非标齿轮公法线长度
现代日本の开化--夏目漱石 夏目漱石的演讲《现代日本の开化》是对现代日本社会的观察和思考。夏目漱石通过自己的演讲,讲述了日本社会的变革和发展,表达了对日本现代化的看法和思考。 在演讲中,夏目漱石提到了...
【日本东北大学李昊课题组】专注于材料设计与计算以及人工智能领域的研究,特别是材料计算和机器学习技术在材料科学中的应用。课题组由李昊副教授领导,他在2022年开始担任日本东北大学材料科学高等研究所(AIMR)的...
日本,这个位于东亚的岛国,由四个主要岛屿——本州、北海道、四国、九州以及众多小岛构成,是一个融合了传统与现代、自然美景与高科技的国家。日本的历史悠久,文化丰富,其独特的传统艺术和习俗,如茶道、武士道和...