使用Java自帶類庫實現日期時間增減還是比自己人工拆分編寫要牢靠,代碼也簡潔多了。
下面代碼實現了在原有日期時間上加上一些分鍾得到新的日期時間的功能,稍加改造還可以實現逆向運算。
代碼:
package datetime; import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TimeTest { public static String getNewTime(String datetime,String addMinutes) throws Exception{ SimpleDateFormat formatter =new SimpleDateFormat("yyyy年MM月dd日 HH時mm分"); Date originalDate = formatter.parse(datetime); Calendar newTime = Calendar.getInstance(); newTime.setTime(originalDate); newTime.add(Calendar.MINUTE,Integer.parseInt(addMinutes));//日期加n分 Date newDate=newTime.getTime(); String retval = formatter.format(newDate); return retval; } public static void main(String[] args) throws Exception { String[][] arrays= { {"2019年11月15日 08時63分","10"}, {"2019年11月15日 08時03分","15"}, {"2019年11月15日 09時63分","20"}, {"2019年11月15日 24時63分","25"}, {"2019年11月15日 08時63分","30"}, {"2019年11月15日 18時63分","35"}, {"2019年11月15日 08時63分","40"}, {"2019年11月15日 08時63分","45"}, {"2019年11月15日 15時00分","50"}, {"2019年11月15日 18時01分","60"}, {"2019年11月15日 18時01分","360"}, }; for(String[] arr:arrays) { String template=" {0} + {1}分 = {2}"; Object[] objs={arr[0],arr[1],getNewTime(arr[0],arr[1])}; System.out.println(MessageFormat.format(template, objs)); } } }
輸出:
2019年11月15日 08時63分 + 10分 = 2019年11月15日 09時13分 2019年11月15日 08時03分 + 15分 = 2019年11月15日 08時18分 2019年11月15日 09時63分 + 20分 = 2019年11月15日 10時23分 2019年11月15日 24時63分 + 25分 = 2019年11月16日 01時28分 2019年11月15日 08時63分 + 30分 = 2019年11月15日 09時33分 2019年11月15日 18時63分 + 35分 = 2019年11月15日 19時38分 2019年11月15日 08時63分 + 40分 = 2019年11月15日 09時43分 2019年11月15日 08時63分 + 45分 = 2019年11月15日 09時48分 2019年11月15日 15時00分 + 50分 = 2019年11月15日 15時50分 2019年11月15日 18時01分 + 60分 = 2019年11月15日 19時01分 2019年11月15日 18時01分 + 360分 = 2019年11月16日 00時01分
附錄:SimpleFormat輸出格式定義,這個必不可少:
yyyy:年 MM:月 dd:日 hh:1~12小時制(1-12) HH:24小時制(0-23) mm:分 ss:秒 S:毫秒 E:星期幾
--END-- 2019-11-15 18:35