mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-30 13:19:11 +02:00
BUGFIX: corrected datetime output when using 12-hour time values returned from SQLServer databases
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@77593 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
1640844189
commit
8afb2c131c
@ -1,21 +1,21 @@
|
||||
<?php
|
||||
/**
|
||||
* Field for entering a date/time pair.
|
||||
*
|
||||
*
|
||||
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
|
||||
*
|
||||
* @package forms
|
||||
* @subpackage fields-datetime
|
||||
*/
|
||||
class PopupDateTimeField extends CalendarDateField {
|
||||
|
||||
|
||||
/**
|
||||
* @todo js validation needs to be implemented.
|
||||
* @see sapphire/forms/DateField#jsValidation()
|
||||
*/
|
||||
function jsValidation() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @todo php validation needs to be implemented.
|
||||
* @see sapphire/forms/DateField#validate($validator)
|
||||
@ -23,26 +23,26 @@ class PopupDateTimeField extends CalendarDateField {
|
||||
function validate() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
function Field() {
|
||||
|
||||
Requirements::css( SAPPHIRE_DIR . '/css/PopupDateTimeField.css' );
|
||||
|
||||
|
||||
$field = parent::Field();
|
||||
|
||||
|
||||
DropdownTimeField::Requirements();
|
||||
|
||||
|
||||
$id = $this->id();
|
||||
|
||||
$val = $this->attrValue();
|
||||
|
||||
|
||||
$date = $this->attrValueDate();
|
||||
$time = $this->attrValueTime();
|
||||
|
||||
|
||||
$futureClass = $this->futureOnly ? ' futureonly' : '';
|
||||
|
||||
|
||||
$innerHTMLDate = parent::HTMLField( $id . '_Date', $this->name . '[Date]', $date );
|
||||
$innerHTMLTime = DropdownTimeField::HTMLField( $id . '_Time', $this->name . '[Time]', $time );
|
||||
|
||||
|
||||
return <<<HTML
|
||||
<div class="popupdatetime">
|
||||
<ul>
|
||||
@ -52,35 +52,47 @@ class PopupDateTimeField extends CalendarDateField {
|
||||
</div>
|
||||
HTML;
|
||||
}
|
||||
|
||||
|
||||
function attrValueDate() {
|
||||
if( $this->value )
|
||||
return date( 'd/m/Y', strtotime( $this->value ) );
|
||||
return date( 'd/m/Y', strtotime( $this->value ) );
|
||||
else
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
function attrValueTime() {
|
||||
if( $this->value )
|
||||
return date( 'h:i a', strtotime( $this->value ) );
|
||||
return date( 'h:i a', strtotime( $this->value ) );
|
||||
else
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
function setValue( $val ) {
|
||||
if( is_array( $val ) ) {
|
||||
|
||||
if ($val) {
|
||||
if (!is_array($val) ) { //&& strlen($val) == 26) {
|
||||
|
||||
$ampm = substr($val,strlen($val)-2,strlen($val));
|
||||
if ($ampm == "PM") { //correct for pm offset when cutting off 12-hour clock format
|
||||
$val = substr($val,0,strlen($val)-6)."PM";
|
||||
} elseif ($ampm == "AM") {
|
||||
$val = substr($val,0,strlen($val)-6);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( is_array( $val ) ) {
|
||||
|
||||
// 1) Date
|
||||
|
||||
|
||||
if( $val[ 'Date' ] && preg_match( '/^([\d]{1,2})\/([\d]{1,2})\/([\d]{2,4})/', $val[ 'Date' ], $parts ) )
|
||||
$date = "$parts[3]-$parts[2]-$parts[1]";
|
||||
else
|
||||
$date = null;
|
||||
|
||||
|
||||
// 2) Time
|
||||
|
||||
|
||||
$time = $val[ 'Time' ] ? date( 'H:i:s', strtotime( $val[ 'Time' ] ) ) : null;
|
||||
|
||||
|
||||
if( $date == null )
|
||||
$this->value = $time;
|
||||
else if( $time == null )
|
||||
|
Loading…
Reference in New Issue
Block a user