Creating date field with only month and year - Drupal

15,459

Solution 1

Hey, I found the correct way of doing this. The solution creates a custom form #type element. See http://www.akchauhan.com/create-drupal-form-elements-like-date-element/

Solution 2

Using the Date API module (part of the Date module), you can do something like this....

<?php
$form['payment_expirationDate'] = array(
    '#type' => 'date_select',
    '#title' => t('Expiration Date:'),
    '#date_format' => 'm-Y',
    '#default_value' => $expirationDate,
    '#date_year_range' => '-1:+10',
    '#required' => TRUE,
    '#date_label_position' => 'within'
 ); 
?>

The date_select type will give you select box form elements for your field. And the #date_format array key allows you to use a PHP date format string to control what select boxes appear and what goes inside them.

Solution 3

Go for two select boxes and pre populate the fields with month and years!

'#type' => 'select', '#options' => array( '1' => 'January', '2' => 'February', . . . '12' => 'December', ),

Same way for the years. You can generate the year array using simple php code and then use it in the option instead of giving all the years manually!

Solution 4

I've just done this in Drupal 7. Just install and enable the Date module, add a Date field to your Content Type, and then when editing it's settings, under "Date attributes to collect", just tick Year and Month. Then when a user is creating a new instance of that type, they will just get 2 dropdown boxes; one for Month and one for Year.

As for displaying them nicely, first go into Configutation > Date and Time settings, then create a new Format using PHP Date formatting e.g. "F Y" will give you something like "April 2012". Create a new Date Type which uses that format, and then go back to your Content Type display settings, and edit your new Date field to use the new Date Type.

Share:
15,459
Sparky
Author by

Sparky

Hakuna Matata

Updated on June 20, 2022

Comments

  • Sparky
    Sparky almost 2 years

    I am creating a credit card form in Drupal. I need a date select field where users can select their credit card expiry date, which consists of only Month and Year -No Day.

    The Drupal form #type 'date' produces a date chooser, which has day-month-year option. I just need month-year. Any help?