0

我的问题是:

  1. 你们中的任何专家都使用 javascript 日期“对象”(ms)的概念作为“日期标准”并将其存储在您的数据库中吗?

  2. 这个想法有优点和缺点吗?

背景:

最近我一直在研究 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>

Javascipt

$(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),然后将对象拉出并以您想要的任何方式重新格式化。

我对你的问题是:

  1. 专家们是否使用过这种技术?(不必操作日期/时间字符串,只需操作对象)

  2. 我在这个想法中可能遗漏了哪些优点和缺点?

谢谢!

4

0 回答 0