我已经尝试了几种方法来转换使用datetimepicker选择的日期以将其保存在我的mysql数据库中,但它们都不起作用。
我想保存这种格式:
10 Octobre 2015 - 12:28 pm
但我保存了这个:
01 Jan 1970
有什么建议吗?许多人
我选择日期的代码:
<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>
并保存:
$date_from=$_POST['date_from'];
$query = $db->prepare('INSERT INTO events (date_from, title)
VALUES (:date_from, :titre)');
答案 0 :(得分:1)
派对有点晚,但您可以使用以下内容获取提交输入。这是为转换多个输入而设计的,但如果您愿意,也可以编辑为仅在一个输入上运行。
以下内容允许您以12小时格式显示时间选择,以及将datetimepicker js应用于任何动态创建的元素。
$(document).on("mouseover mouseout", ".datetimepicker", function(){
$(this).datetimepicker({
format:'YYYY-MM-DD hh:mm:00 a'
})
});
顺便说一下,datetimepicker需要moment.js所以在你提交之前运行它来保存到mysql。
$('form').submit( function () {
$('.datetime').each( function() {
$(this).val(moment(new Date($(this).val())).format("YYYY-MM-DD HH:mm:ss"))
});
})
要显示您提到的时间,您可能需要将样式应用到呈现它的日期。
答案 1 :(得分:0)
将您的MySQL字段设置为Binary Oct Dec Hex Glyph
010 0000 040 32 20 (space)
010 0001 041 33 21 !
010 0010 042 34 22 "
010 0011 043 35 23 #
010 0100 044 36 24 $
010 0101 045 37 25 %
010 0110 046 38 26 &
010 0111 047 39 27 '
010 1000 050 40 28 (
010 1001 051 41 29 )
010 1010 052 42 2A *
010 1011 053 43 2B +
010 1100 054 44 2C ,
010 1101 055 45 2D -
010 1110 056 46 2E .
010 1111 057 47 2F /
011 0000 060 48 30 0
011 0001 061 49 31 1
011 0010 062 50 32 2
011 0011 063 51 33 3
011 0100 064 52 34 4
011 0101 065 53 35 5
011 0110 066 54 36 6
011 0111 067 55 37 7
011 1000 070 56 38 8
011 1001 071 57 39 9
011 1010 072 58 3A :
011 1011 073 59 3B ;
011 1100 074 60 3C <
011 1101 075 61 3D =
011 1110 076 62 3E >
011 1111 077 63 3F ?
100 0000 100 64 40 @
100 0001 101 65 41 A
100 0010 102 66 42 B
100 0011 103 67 43 C
100 0100 104 68 44 D
100 0101 105 69 45 E
100 0110 106 70 46 F
100 0111 107 71 47 G
100 1000 110 72 48 H
100 1001 111 73 49 I
100 1010 112 74 4A J
100 1011 113 75 4B K
100 1100 114 76 4C L
100 1101 115 77 4D M
100 1110 116 78 4E N
100 1111 117 79 4F O
101 0000 120 80 50 P
101 0001 121 81 51 Q
101 0010 122 82 52 R
101 0011 123 83 53 S
101 0100 124 84 54 T
101 0101 125 85 55 U
101 0110 126 86 56 V
101 0111 127 87 57 W
101 1000 130 88 58 X
101 1001 131 89 59 Y
101 1010 132 90 5A Z
101 1011 133 91 5B [
101 1100 134 92 5C \
101 1101 135 93 5D ]
101 1110 136 94 5E ^
101 1111 137 95 5F _
110 0000 140 96 60 `
110 0001 141 97 61 a
110 0010 142 98 62 b
110 0011 143 99 63 c
110 0100 144 100 64 d
110 0101 145 101 65 e
110 0110 146 102 66 f
110 0111 147 103 67 g
110 1000 150 104 68 h
110 1001 151 105 69 i
110 1010 152 106 6A j
110 1011 153 107 6B k
110 1100 154 108 6C l
110 1101 155 109 6D m
110 1110 156 110 6E n
110 1111 157 111 6F o
111 0000 160 112 70 p
111 0001 161 113 71 q
111 0010 162 114 72 r
111 0011 163 115 73 s
111 0100 164 116 74 t
111 0101 165 117 75 u
111 0110 166 118 76 v
111 0111 167 119 77 w
111 1000 170 120 78 x
111 1001 171 121 79 y
111 1010 172 122 7A z
111 1011 173 123 7B {
111 1100 174 124 7C |
111 1101 175 125 7D }
111 1110 176 126 7E ~
列,然后对您的datetimepicker执行此操作:
DATETIME
答案 2 :(得分:0)
有一些关于Bootstrap datepicker的事情。
首先,它不能处理表单提交事件,因此当您设置data-date-format =&#34; dd MM yyyy - HH:ii p&#34;时,您将获得完全相同的POST字符串。这意味着需要预处理。
您可以通过客户端或服务器端进行此操作。始终是客户端更好的工作,以节省我们的服务器资源。您可以在PHP中构建一个函数,将您的POST字符串转换为MySQL格式。
请记住,如果您在客户端处理,则需要以MySql格式发送POST(YYYY-mm-dd表示DATE)或(YYYY-mm-dd H:i:s表示DATETIME或TIMESTAMP)
例: //使用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);
});
现在您可以在隐藏字段上推送此值: HTML:
<input id="sqldate_from" type="hidden" name="sqldate_from" />
脚本:
$("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:
$date_from = $_POST['sqldate_from'];
您也可以在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;
}
希望有用
KR apassos