goo blog サービス終了のお知らせ 

プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

便利C++の日付と時間クラス

2014年04月05日 19時40分02秒 | 便利ライブラリ関数

ここは、普段自分専用に使ってるC++のクラス・ライブラリです。
メンバ関数(メンバ変数も含む)は public 属性と protected 属性のみを公開し private 属性は記述してません。
また、この普段自分専用に使ってるC++のクラス・ライブラリは、現在ソースを公開してません。(戻る)

  1. 日付と時刻のクラス (oemDateTime)
  2. ファイル日時設定のクラス (oemTimeChange)
  3. ファイル属性設定のクラス (oemAttrChange)
  4. タイムスタンプと属性のクラス (oemTimeStamp)

日付と時刻のクラス - oemDateTime.h

class oemDateTime {
public:
    // 取得関数
    BOOL isLeap( WORD wYear );
    WORD getMaxDays( WORD wYear, WORD wMonth );
    // 日時操作
    VOID setSystemTime( LPSYSTEMTIME st, ULONGLONG u64ms );
    VOID addSystemTime( LPSYSTEMTIME st, LPSYSTEMTIME st1, LPSYSTEMTIME st2 );
    // 文字列作成
    LPTSTR makeHourMinSec( LPTSTR lpBuff, LPCTSTR lpFormat, LPSYSTEMTIME st, ULONGLONG u64ms );
    LPTSTR makeTimeFormat( LPTSTR lpBuff, LPCTSTR lpFormat, LPSYSTEMTIME st );
    LPTSTR makeTimeFormat( LPTSTR lpBuff, LPCTSTR lpFormat, ULONGLONG u64ms );
};

ファイル日時設定のクラス - oemTimeChange.h

// 列挙定数(日時モード)
enum eTIMEMODE {
    TIMEMODE_NORMAL,        // そのまま
    TIMEMODE_CURRENT,       // 現在日時に合わせる
    TIMEMODE_CREATE,        // 作成日時に合わせる
    TIMEMODE_WRITE,         // 更新日時に合わせる
    TIMEMODE_ACCESS,        // アクセス日時に合わせる
    TIMEMODE_MATCH,         // 作成日時を更新日時に合わせる
    MAX_TIMEMODE,
};

// 記号定数(日時オプション)
#define TIMEOPT_SECROUND    (0x0001)            // 秒の繰り上がり
#define TIMEOPT_MINEVEN     (0x0002)            // 分を偶数に補正
#define TIMEOPT_SECEVEN     (0x0004)            // 秒を偶数に補正
#define TIMEOPT_SECZERO     (0x0008)            // 秒を00にセット
#define TIMEOPT_MSECZERO    (0x0010)            // 1/1000秒を000にセット

class oemTimeChange {
public:
    // 設定関数
    VOID setModeChange( LPFILETIME ftCreate, LPFILETIME ftWrite, LPFILETIME ftAccess, UINT eMode );
    VOID setTimeChange( LPFILETIME ft, UINT nOption );
};

ファイル属性設定のクラス - oemAttrChange.h

// 記号定数(属性オプション)
#define ATTROPT_ARCHIVE     (0x0001)            // アーカイブ属性
#define ATTROPT_READONLY    (0x0002)            // 読み取り専用属性
#define ATTROPT_HIDDEN      (0x0004)            // 隠しファイル属性
#define ATTROPT_SYSTEM      (0x0008)            // システムファイル属性
#define ATTROPT_SUBDIR      (0x0010)            // ディレクトリも変更対象

class oemAttrChange {
public:
    // 操作関数
    BOOL isAttrPermit( DWORD dwAttrib, UINT nPermit );
    VOID setAttrChange( LPDWORD dwAttrib, UINT nOption, UINT nEnable );
};

タイムスタンプと属性のクラス - oemTimeStamp.h

class oemTimeStamp {
public:
    // コンストラクタ
    oemTimeStamp();
    // 日時関数
    VOID getTimeParam( UINT& eMode, UINT& nOption );
    VOID setTimeParam( UINT  eMode, UINT  nOption );
    // 属性関数
    VOID getAttrParam( UINT& nPermit, UINT& nOption, UINT& nEnable );
    VOID setAttrParam( UINT  nPermit, UINT  nOption, UINT  nEnable );
    // 先頭ファイルで合わせる
    VOID setHeadTime( LPFILETIME ftCreate, LPFILETIME ftWrite, LPFILETIME ftAccess, DWORD dwAttrib );
    VOID setHeadInfo( LPWIN32_FIND_DATA fdFile );
    BOOL setHeadStamp( LPCTSTR lpGetPath, BOOL bOption=TRUE );
    BOOL setHeadChange( LPCTSTR lpSetPath );
    // 個別ファイルで合わせる
    BOOL fileTimeStamp(                    LPCTSTR lpSetPath );
    BOOL copyTimeStamp( LPCTSTR lpGetPath, LPCTSTR lpSetPath, BOOL bOption=TRUE );
};

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 便利C++のログ保存クラス | トップ | 便利C++のドライブ関連クラス »
最新の画像もっと見る

コメントを投稿

便利ライブラリ関数」カテゴリの最新記事