1

私は CVS ログ リーダーでフォーマットの検証を行っていました。CVS 移行後、以下のエラーが発生しました。

java.text.ParseException: Unparseable date: "2011/05/30 08:27:24"

調査の結果、CVS ログ ファイルの日付形式が YYYY-MM-dd から YYYY/MM/dd に変更されました。検証が失敗したためです。

CVS ログの以前の形式は

RCS file: /opt/cvsrepositories/demo/Demo/source/demo_search/.classpath,v
Working file: source/demo_search/.classpath
head: 1.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1.1
date: 2014-07-14 09:50:57 +0000;  author: Dev.User;  state: Exp;  commitid: 62ee53c3a7d54567;
first version of the search module
=============================================================================

今、それは次のように変更されました:

RCS file: /opt/cvsrepositories/demo/Demo/source/demo_search/.classpath,v
Working file: source/demo_search/.classpath
head: 1.1
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 1; selected revisions: 1
description:
----------------------------
revision 1.1
date: 2014/07/14 09:50:57 +0000;  author: Dev.User;  state: Exp;  commitid: 62ee53c3a7d54567;
first version of the search module
=============================================================================

CVS のマニュアルを確認しましたが、ログの日付形式をフォーマットする方法がありません。

移行されたマシンは、古いマシンと同じ設定になっています。

4

3 に答える 3

0

コードでこのメソッドを使用してみてください。

    private final static SimpleDateFormat OLD_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private final static SimpleDateFormat NEW_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    public static Date parseDate(String date){
           Date parsedDate;
           try {
               log.debug("Try to parse date using old format");
               parsedDate = OLD_FORMAT.parse(date);
               log.debug("Parsed date using old format");
          } catch (ParseException e) {
               log.debug("Failed while parsed date using old format");
               try {
                   log.debug("Try to parse date using new format");
                   parsedDate = NEW_FORMAT.parse(date);
                   log.debug("Parsed date using new format");
               } catch (ParseException e) {
                   throw new IllegalStateException("Format of 'date' parameter must be yyyy-MM-dd HH:mm:ss or yyyy/MM/dd HH:mm:ss");
               }
          }
          return parsedDate;
     }
于 2016-02-22T11:10:30.143 に答える