私の質問は次のとおりです。
あなたの専門家は、javascript 日付「オブジェクト」(ms) の概念を「日付標準」として使用し、それをデータベースに保存していますか?
このアイデアには賛否両論がありますか?
バックグラウンド:
最近、私は Javascript Date オブジェクトとその使用法に取り組んでいます。演習として、各コマンドの使用法を理解できるようにするためだけでなく、参照としても役立つように、このページを作成しました。
日付を格納する標準的な方法としての「オブジェクト」(ミリ秒) の概念は興味深いので、「オブジェクト」を作成し、それを varchar としてテーブルに格納し、それを引き出して、あらゆる目的に使用するコードを作成しました。必要があります。
MySQL (YYYY-MM-DD)、標準的な米国の日付形式 (MM/DD/YYYY)、および php strtotime (DD/MM/YYYY) を使用してさまざまな日付を操作しようとした後、それぞれ異なる文字列形式で、「オブジェクト」フォームは、もう少し「標準的」で柔軟な場合があります。
概念実証として、フロントエンドが「日付」をミリ秒値としてサーバーに渡し、サーバーがそれを送り返し、フロントエンドによって必要な方法で解析される単純なフロントエンドとバックエンドを作成しました。
コードは次のとおりです。
CSS
.divtest {
width:500px;
margin:0px auto;
text-align:center;
background-color:#C1C1FD;
padding:2em;
border: 10px solid #FCD1E3;}
.span1 {
color:black;}
.div1 {
color:red;
background-color:#C6CDFD;}
HTML
<body>
<div style="width:500px; margin:0px auto; text-align:center;">
<div id = "test1" class="div1"><span class="span1">Date:</span></div>
<div id = "test2" class="div1"><span class="span1">Object:</span></div>
<div id = "test3" class="div1"><span class="span1">Returned Object:</span></div>
<div id = "test4" class="div1"><span class="span1">Returned Date/Time:</span></div>
<div id = "test5" class="div1"><span class="span1">Returned Year:</span></div>
<div id = "test6" class="div1"><span class="span1">Returned Month:</span></div>
<div id = "test7" class="div1"><span class="span1">Returned Day:</span></div>
<div id = "test8" class="div1"><span class="span1">Returned Hours:</span></div>
<div id = "test9" class="div1"><span class="span1">Returned Minutes:</span></div>
</div>
Javascript
$(document).ready(function(e) {
var testdate = "12-12-2013";
var testobject = Date.parse("12/12/2013 11:22:33");
$('#test1').append(testdate);
$('#test2').append(testobject);
$.ajax({
type: "POST",
url: "timedatewritereadbackend.php",
data: {testobject: testobject},
dataType: 'json'
})
.done( function(result) {
$('#test3').append(result.datetimeobject);
var milliseconds = result.datetimeobject;
var settime = new Date( milliseconds * 1 );//1386876153000
$('#test4').append(settime.toString());
$('#test5').append(settime.getFullYear());
$('#test6').append(settime.getMonth());
$('#test7').append(settime.getDate());
$('#test8').append(settime.getHours());
$('#test9').append(settime.getMinutes());
console.log("Object: " + result.datetimeobject + "--" + "Var milli: " + milliseconds + "--" + "Var settime: " + settime);
})
.fail(function(jqXHR, textStatus, errorThrown){ console.log(jqXHR.responseText, textStatus, errorThrown);
$('#returnedobject').append("Fail");
})
.always(function(data, textStatus, jqXHR){
console.log(data, textStatus, jqXHR);
});
});//End of ready
PHP
$testobject = $_POST['testobject'];
$localid = '138';
$host = XXXXX;
$user = XXXXX;
$password = XXXXX;
$dbname = XXXXX;
$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}
$query = " UPDATE testtable
SET datetimeobject = '$testobject'
WHERE localid = $localid " ;
$result = mysqli_query($cxn, $query) or die ("could not query database 1");
$query = " SELECT datetimeobject
FROM testtable
WHERE localid = $localid " ;
$result = mysqli_query($cxn, $query) or die ("could not connect");
$row = mysqli_fetch_array($result);
$variablestopass = array
(
'datetimeobject' => $row['datetimeobject']
);
echo json_encode($variablestopass);
これは「概念実証」としてうまく機能しているようです - 常に日付/日時をオブジェクト (varchar) として保存してから、オブジェクトを引き出して、好きなように再フォーマットします。
あなたへの私の質問は次のとおりです。
専門家はこの手法をまったく使用していますか? (日付/時刻の文字列を操作する必要はなく、オブジェクトのみを操作する必要があります)
このアイデアに欠けている可能性のある長所と短所はありますか?
ありがとう!