将jQuery日期选择器格式转换为SQL日期格式

时间:2011-03-03 作者:Mia

我将jQuery日期选择器格式设置为D d.m. 显示为Th 3.3. 对于我要用于排序帖子的自定义元字段。在SQL中,自定义元字段另存为D d.m.

我想显示D d.m. 在前端设置格式,并将其作为mm dd yy或03-03-2011存储在我的SQL数据库中。

有什么想法吗?

自定义元字段cp\\U日期的我的输入字段:

 <input name="<?php echo $result->field_name; ?>" id="<?php echo $result->field_name; ?>" type="text" minlength="2" value="<?php if(isset($_POST[$result->field_name])) echo $_POST[$result->field_name]; ?>" autocomplete="off" class="datepicker <?php if($result->field_req) echo \'required\' ?>" /> 

2 个回复
最合适的回答,由SO网友:t31os 整理而成

首先,您需要停止将日期存储在D d.m 格式,查询将无法基于该数据进行排序。

正如wyrfel所指出的,您需要使用alternate field选项来拥有两个字段,一个显示漂亮的(或您选择的)日期格式,另一个保存您存储在DB中的值(以查询可以正确排序的格式,如yy-mm-dd).

根据你发布的一行代码,试一试。。

PHP/HTML: (替换您发布的代码)

<?php 
$date_valid = false;
if( isset( $_POST[$result->field_name] ) ) {
    $date_parts = explode( \'-\', $_POST[$result->field_name] );
    $date_valid = ( 3 == count( $date_parts ) ) 
        // Validate date - checkdate returns true/false
        ? checkdate( $date_parts[1], $date_parts[2], $date_parts[0] ) 
        : false;
}
$display_date = ( $date_valid ) ? date( \'D d.m\', strtotime( implode( \'-\', $date_parts ) ) ) : \'\';
$storage_date = ( $date_valid ) ? $_POST[$result->field_name] : \'\';
$req =  $result->field_req ? \' required\' : \'\';
?>
<input type="text" value="<?php echo $display_date; ?>" class="datepicker<?php echo $req ?>" />
<input name="<?php echo $result->field_name; ?>" type="hidden" value="<?php echo $storage_date; ?>" class="date_alternate" />
Datepicker jQuery: (只需从中提取所需内容)

jQuery(function($) {
    $( ".datepicker" ).datepicker({
        dateFormat: \'D d.m\',
        altField: ".date_alternate",
        altFormat: "yy-mm-dd"
    });
});
这样你所有的日期都会存储在yy-mm-dd 格式,但用户可以在中看到日期D d.m.

我在本地测试了这种方法,并能够获得所需的功能,下面是我的主题选项页面的一些截图,使用了日期字段和您选择的日期格式(我的代码显然与上面的略有不同,但方法是相同的)。

Selecting a date:
enter image description here当前值位于“实时获取”部分的底部。

What you see after clicking a date in the calendar:
enter image description here

Visual and stored values:
enter image description here

我想看到代码付诸实践可能会很好,希望能有所帮助:)

SO网友:wyrfel

请在上查看“备用字段”示例和源代码this page. 将备用字段设置为隐藏字段,然后将备用字段的值而不是可见字段的值保存到元数据中。

啊。。。当然,备用字段的日期格式应为“yy-mm-dd”。

结束