ぱぱーっと作ってしまったので、ツメが甘いところがあるかも。
Javaで日付系のメソッドをいろいろ。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TimeUtil { // 年月日 public static final String DATE_FORMAT_1 = "yyyyMMdd"; // 年月日時分 public static final String DATE_FORMAT_2 = "yyyyMMddHHmmss"; // 年月日時分秒ミリ秒 public static final String DATE_FORMAT_3 = "yyyyMMddHHmmssSSS"; // 年/月/日 public static final String DATE_FORMAT_4 = "yyyy/MM/dd"; // 年/月/日 時:分:秒 public static final String DATE_FORMAT_5 = "yyyy/MM/dd HH:mm:ss"; // 年-月-日 時:分:秒 public static final String DATE_FORMAT_6= "yyyy-MM-dd HH:mm:ss"; // 曜日まで public static final String DATE_FORMAT_7 = "yyyy年MM月dd日 EEE曜日"; // 時分秒 public static final String DATE_FORMAT_8 = "HH:mm:ss"; /** * システム日時を指定のフォーマットで取得 * @param format 返却値フォーマット * @return システム日時 */ public String getSysDate(String format) { Date sysdate = new Date(); SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(sysdate); } /** * 日時を指定のフォーマットに変換する * @param date 日時文字列 * @param format 返却値フォーマット * @return フォーマット後日時 */ public String formatDate(String srcDate, String format) { String fmtDate = null; // 数字以外は除去し、ミリ秒まで0で桁を補正する String strDate = figure(srcDate); Date dDate = strToDate(strDate, DATE_FORMAT_3); if (dDate != null) { SimpleDateFormat sdf = new SimpleDateFormat(format); fmtDate = sdf.format(dDate); } return fmtDate; } /** * fromからtoの差分を分で算出する * @param fromDate from * @param toDate to * @return fromからtoの差分(分) */ public long diffDateMinute(String fromDate, String toDate) { long diff = diffDateMill(fromDate, toDate); return diff / (1000 * 60); // ミリ秒から分に計算 } /** * fromからtoの差分を秒で算出する * @param fromDate from * @param toDate to * @return fromからtoの差分(秒) */ public long diffDateSecond(String fromDate, String toDate) { long diff = diffDateMill(fromDate, toDate); return diff / 1000; // ミリ秒から秒に計算 } /** * fromからtoの差分をHH:mm:ssで返却する * @param fromDate from * @param toDate to * @return fromからtoの差分(HH:mm:ss) */ public String diffDateStr(String fromDate, String toDate) { long diffSecond = diffDateSecond(fromDate, toDate); long hour = diffSecond / 60 / 60; // 時 long minute = (diffSecond / 60) % 60; // 分 long second = diffSecond % 60; // 秒 String strDiff = String.format("%02d", hour) + ":" + String.format("%02d", minute) + ":" + String.format("%02d", second); return strDiff; } /** * fromからto の日時の差分をミリ秒で算出する * @param fromDate from * @param toDate to * @return fromからtoの差分(ミリ秒) */ public long diffDateMill(String fromDate, String toDate) { SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_3); String sDate1 = figure(fromDate); String sDate2 = figure(toDate); Date dDate1 = null; Date dDate2 = null; try { dDate1 = sdf.parse(sDate1); dDate2 = sdf.parse(sDate2); } catch(ParseException e) { System.out.println("日付形式の文字列ではありません"); } long lDate1 = dDate1.getTime(); long lDate2 = dDate2.getTime(); long diff = lDate2 - lDate1; return diff; } /** * 時間(h)を加算する * @param date 日付文字列 * @param addHour 加算時間(h) * @param format 返却値フォーマット * @return 計算後時間文字列 */ public String addHour(String date, int addHour, String format) { Calendar cal = strToCalendar(date); cal = addTime(cal, 0, 0, 0, addHour, 0, 0, 0); SimpleDateFormat sdf = new SimpleDateFormat(format); String formatDate = sdf.format(cal.getTime()); return formatDate; } /** * 日時に加算する * @param cal カレンダー * @param addYear 年 * @param addMonth 月 * @param addDate 日 * @param addHour 時間 * @param addMinute 分 * @param addSecond 秒 * @param addMillisecond ミリ秒 * @return 処理結果 */ public Calendar addTime(Calendar cal, int addYear, int addMonth, int addDate, int addHour, int addMinute, int addSecond, int addMillisecond) { cal.add(Calendar.YEAR, addYear); // 年 cal.add(Calendar.MONTH, addMonth); // 月 cal.add(Calendar.DATE, addDate); // 日 cal.add(Calendar.HOUR_OF_DAY, addHour); // 時 cal.add(Calendar.MINUTE, addMinute); // 分 cal.add(Calendar.SECOND, addSecond); // 秒 cal.add(Calendar.MILLISECOND, addMillisecond); // ミリ秒 return cal; } /** * 日付文字列→Calendar * @param date 日時文字列 * @return Calendar型 */ public Calendar strToCalendar(String date) { String strDate = formatDate(date, DATE_FORMAT_6); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_6); Date dDate = null; try { dDate = new Date(sdf.parse(strDate).getTime()); } catch (ParseException e) { System.out.println("パースエラー"); return null; } Calendar cal = Calendar.getInstance(); cal.setTime(dDate); return cal; } /** * 日付文字列をDate型に変換する * @param date 日付文字列 * @param format フォーマット * @return Date */ public Date strToDate(String date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); sdf.setLenient(false); Date dDate = null; try { dDate = sdf.parse(date); } catch (ParseException e) { System.out.println("パースエラー"); } return dDate; } /** * Calendar型 をフォーマットした日付文字列に変換する * @param cal カレンダー * @param format フォーマット * @return 日付文字列 */ public String calToStr(Calendar cal, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); String formatDate = sdf.format(cal.getTime()); return formatDate; } /** * 数字以外の文字を取り除き、ミリ秒に桁が満たない場合、0埋めする * @param date 日付文字列 * @return 補完後の日付文字列 */ public String figure(String date) { // 数字以外は除去し、ミリ秒まで0で桁を補正する String regExp = "[^\\d]"; String strDate = date.replaceAll(regExp, ""); strDate = String.format("%-17s", strDate).replace(" ", "0"); return strDate; } }
技術系の検索で飛んできて毒親ワードに引き寄せられました。
みすくちゃんの文章好みです。
過去記事を少ししか読んでないんですが、個人的にはケツがその後どうなったのか気になっています。筋トレはもちろん続ければ効果ありと思うんですが、よもやけつが盛り上がるとは考えた事がなかったので…。
そしてコメントがJAVAに書くところではないことでしたね。出社したらコード動かしてみます。
> なつるさん
コメントありがとうございます。
若干おしりっぽいものができたけれど、その後スリーサイズや太もも周りなど一切変化がなく、
筋肉もまったくつかなくて、筋トレは辞めてしまいました。
でも筋トレのストイックさは気に入っていたので、またやろうと思います。
コードにバグがあったら教えてください。