Datetime Extras
コアのDatetimeモジュールとDatetime Rangeモジュールを拡張し、より柔軟な日付/時刻処理のための追加フィールドタイプ、ウィジェット、フォーマッターを提供します。
datetime_extras
インストール
composer require 'drupal/datetime_extras:8.x-1.2'
概要
Datetime Extrasモジュールは、コアのDatetimeモジュールとDatetime Rangeモジュールを拡張する追加機能を提供します。日付なしで時刻値のみを保存する新しい「Time Only」フィールドタイプと、datetimeおよびdate rangeフィールド向けの複数の拡張ウィジェットを追加します。
主要な機能として、終了時刻を絶対的な時刻ではなく開始日時からのオフセット(duration)として指定できる、durationベースの日付範囲ウィジェットがあります。また、日付のみが関係する場合に時刻選択を削除する日付のみ選択リストウィジェットや、年の範囲や時間の増分をカスタマイズできる設定可能なdatetimeウィジェットも提供しています。
Features
- 日付コンポーネントなしで時刻値を保存するTime Onlyフィールドタイプ。スケジュール、営業時間、または定期的な時刻ベースのイベントに便利
- コンテンツ作成者が絶対的な終了日時またはstart timeからのdurationオフセットを指定できる、durationウィジェット付き日付時刻範囲
- 日付コンポーネントのみの選択リストでdatetimeフィールドを表示し、不要な時刻選択を非表示にする「Select list, no time」ウィジェット
- HTML5 date input向けのカスタマイズ可能な年範囲制限と時間増分設定を備えた設定可能なDate and timeウィジェット
- Time Onlyフィールドタイプ用のクリーンな時刻のみの入力インターフェースを提供するTime Onlyウィジェット
- 日付のみフィールドとdatetimeフィールドに対する自動的なduration粒度の調整
- Year only、Month/Year、Year/Monthの組み合わせを含む様々な日付パーツ順序オプションのサポート
Use Cases
柔軟なdurationを持つイベントスケジューリング
イベントを作成する際、コンテンツ編集者は開始日時を指定し、終了時刻を直接設定するか、イベントのdurationを定義するかを選択できます。例えば、定期的なミーティングは常に1時間続く場合、編集者は毎回終了時刻を計算して入力する代わりに、単に「1時間」のdurationを選択できます。
営業時間の管理
Time Onlyフィールドタイプを使用して、特定の日付に関連付けずに店舗の開店・閉店時間を保存します。店舗の営業時間、予約可能な時間枠、またはサービス時間帯の表示に最適です。
年のみの選択を使用した過去の日付入力
年のみが重要な過去の日付(誕生年、設立年、発行年など)を取得する必要があるコンテンツタイプの場合、Year only(Y)の日付順序で設定されたSelect list, no timeウィジェットを使用します。これによりデータ入力が簡素化され、不明な月や日についての混乱を避けられます。
時刻を含まない日付のみのフィールド
datetimeフィールドを使用するが時刻が無関係な場合(発行日やイベント日など)、Select list, no timeウィジェットは時刻選択を完全に削除し、コンテンツ編集者によりクリーンなインターフェースを提供します。
異なるコンテンツタイプ向けの設定可能な日付範囲
設定可能なDate and timeウィジェットを使用して、日付選択を適切な範囲に制限します。例えば、「生年月日」フィールドは過去の日付のみを許可するために'-120:+0'を使用し、「将来のイベント日」フィールドは今後10年間の日付のみを許可するために'+0:+10'を使用できます。
複数日イベントの作成
カンファレンスや複数日イベントの場合、日付のみフィールド用に設定されたDate and time range with durationウィジェットにより、編集者はdurationとして「3日」を指定でき、終了日が自動的に計算されます。ウィジェットは人間に分かりやすいカウント(1日目から3日目)とコンピュータのオフセット計算を適切に処理します。
Tips
- 日付のみフィールドでDate and time range with durationウィジェットを使用する場合、粒度は自動的に日のみに制限されます(時間、分、秒オプションは非表示)
- Select list, no timeウィジェットはコアのDateTimeDatelistWidgetから設定を継承しますが、より柔軟な表示のための拡張日付順序オプション(Y、MY、YM)を追加します
- 設定可能なDate and timeウィジェットには、時間の経過に応じて自動調整される'-50:+50'のような相対的な年範囲、または固定境界のための'2020:2030'のような絶対的な範囲を使用します
- Time Onlyフィールドは標準のdatetimeストレージ形式で値を保存しますが、時刻コンポーネントのみが意味を持ちます - 日付部分は自動的に生成されます
- Duration Fieldモジュールはdurationベースのウィジェットを使用する場合のみ必要です。その他の機能はDuration Fieldなしで動作します
Technical Details
Hooks 2
hook_help
/admin/help/datetime_extrasのモジュールヘルプページ用のヘルプテキストを提供
hook_field_widget_info_alter
Duration Fieldモジュールがインストールされていないか、互換性のない古いバージョンの場合にdaterange_durationウィジェットを条件付きで削除
Troubleshooting 4
Duration Fieldモジュール(バージョン8.x-2.0-rc3以上)がインストールされ有効になっていることを確認してください。Duration Fieldが利用できないか、互換性のない古いバージョンの場合、ウィジェットは自動的に非表示になります。次のコマンドでインストールしてください:composer require 'drupal/duration_field:^2.0' && drush en duration_field
Time Onlyウィジェットにはtime-only値を処理するカスタムバリデーションが含まれています。Time Onlyフィールドには必ずTime Onlyウィジェット(time_only_field_default)を使用してください。ウィジェットはコアのバリデーションが必要とするDrupalDateTimeオブジェクトを追加します。
モジュールは日付のみフィールドのduration表示を人間のカウント(1ベース)に合わせて調整します。月曜日に始まり水曜日に終わる3日間のイベントは「3日」のdurationとして表示されますが、内部的には2日のオフセットとして保存されます。これは意図的な動作です。
DateConfigurableListWidgetの非推奨警告が表示される場合は、フィールドを「Select list, no time」(datetime_datelist_no_time)ウィジェットに移行してください。非推奨ウィジェットはバージョン8.x-2.0で削除されます。