简体   繁体   English

引导日期时间选择器日期格式保存到MySQL

[英]bootstrap datetimepicker dateformat saving to mysql

i have tried several ways to convert date selected with datetimepicker to save it in my mysql database but none of them works. 我尝试了几种方法来转换使用datetimepicker选择的日期,以将其保存在我的mysql数据库中,但是它们都不起作用。

i want to save this format: 我想保存这种格式:

  10 Octobre 2015 - 12:28 pm

but i have this saved: 但我有这个保存:

 01 Jan 1970

any suggestions? 有什么建议么? Many tks 很多tks

My code to select date: 我选择日期的代码:

<div class="input-group date form_datetime col-md-6"  data-date-format="dd MM yyyy - HH:ii p" data-link-field="dtp_input1">
   <input class="form-control" name="date_from" size="16" type="text" value="" readonly>
</div>

and for saving it: 并保存:

$date_from=$_POST['date_from'];
$query = $db->prepare('INSERT INTO events (date_from, title) 
    VALUES (:date_from, :titre)');

A little late to the party but you can use the following to grab input on submit. 聚会晚了一点,但是您可以使用以下内容在提交时获取输入。 This was designed for converting multiple inputs but can be edited to run on just one as well if you so desired. 它是为转换多个输入而设计的,但如果需要,也可以将其编辑为仅在一个输入上运行。

The following allows you to display your time selections in 12 hour format, as well as have datetimepicker js apply to any dynamically created elements. 以下内容允许您以12小时格式显示时间选择,以及将datetimepicker js应用于任何动态创建的元素。

$(document).on("mouseover mouseout", ".datetimepicker", function(){
    $(this).datetimepicker({
        format:'YYYY-MM-DD hh:mm:00 a'
    })
});

btw, datetimepicker requires moment.js so before you submit run this to save to mysql. 顺便说一句,datetimepicker需要moment.js,因此在提交之前,请运行它以保存到mysql。

$('form').submit( function () {
    $('.datetime').each( function() {
        $(this).val(moment(new Date($(this).val())).format("YYYY-MM-DD HH:mm:ss"))
    });
})

To display the time as you had mentioned you may need to apply the styling to the date when you're rendering it. 要显示您提到的时间,您可能需要在渲染日期时将样式应用于日期。

Setup your MySQL field as a DATETIME column, then do this to your datetimepicker: 将您的MySQL字段设置为DATETIME列,然后对datetimepicker执行此操作:

$('#input').datetimepicker(
  'dateFormat': "yy-mm-dd",
  'timeFormat': "HH:mm:ss"
);

There are some things to know about Bootstrap datepicker. 关于Bootstrap日期选择器,有些事情要知道。

First it isn't made to handle form submit event so when you set your data-date-format="dd MM yyyy - HH:ii p", you are getting exactly that POST string. 首先,它不是用来处理表单提交事件的,因此,当您设置data-date-format =“ dd MM yyyy-HH:ii p”时,您将获得该POST字符串。 That means a preprocess are needed. 这意味着需要预处理。

You can do so by the client side or sever side. 您可以在客户端或服务器端执行此操作。 Always is better work in client side so save resources of our server. 总是在客户端方面做得更好,这样可以节省我们服务器的资源。 You can build also a function inside your PHP to convert to MySQL format your POST string. 您还可以在PHP内构建一个函数,以将POST字符串转换为MySQL格式。

Remember if you process at client side you need to send the POST in MySql Format(YYYY-mm-dd for DATE) or (YYYY-mm-dd H:i:s for DATETIME or TIMESTAMP) 请记住,如果您在客户端进行处理,则需要以MySql格式发送POST(DATE为YYYY-mm-dd)或DATETIME或TIMESTAMP为(YYYY-mm-dd H:i:s)

Ex.: // Format your datetimepicker with Mysql format 例如://用Mysql格式格式化datetimepicker

$("input[name='date_from']").datepicker().on('changeDate', function(e){
 var dateFrom = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate(), e.date.getHours(),e.date.getMinutes(),0);
});

Now you can push this value on a hidden field: HTML: 现在,您可以将此值推送到隐藏字段中:HTML:

<input id="sqldate_from" type="hidden" name="sqldate_from" />

SCRIPT: 脚本:

$("input[name='date_from']").datepicker().on('changeDate', function(e){
     var dateFrom = new Date(e.date.getFullYear(), e.date.getMonth(), e.date.getDate(), e.date.getHours(),e.date.getMinutes(),0);
    });
    $("#sqldate_from").val(dateFrom);

PHP: PHP:

$date_from = $_POST['sqldate_from'];

You also can get the original string without treatment and process in PHP...something like this (only for YYYY-mm-dd format): 您也可以不用PHP进行处理就可以获取原始字符串...类似这样(仅适用于YYYY-mm-dd格式):

public function formatDatepickerToMySql($date) {
    if ($date != FALSE) {
        $dateArr = explode("-", $date);
        $newDate = $dateArr[2] . '-' . $dateArr[1] . '-' . $dateArr[0];
        return $newDate;
    }
    return FALSE;
}

Hope be usefull 希望有用

KR apassos KR apassos

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM