Exemple #1
0
/* {{{ Cassandra\Date::__toString() */
PHP_METHOD(Date, __toString)
{
    cassandra_date *self;
    char *ret = NULL;

    if (zend_parse_parameters_none() == FAILURE) {
        return;
    }

    self = PHP_CASSANDRA_GET_DATE(getThis());

    spprintf(&ret, 0, "Cassandra\\Date(seconds=%lld)", cass_date_time_to_epoch(self->date, 0));
    PHP5TO7_RETVAL_STRING(ret);
    efree(ret);
}
CassError select_from(CassSession* session, const char* key) {
  CassError rc = CASS_OK;
  CassStatement* statement = NULL;
  CassFuture* future = NULL;
  const char* query = "SELECT * FROM examples.date_time WHERE key = ?";

  statement = cass_statement_new(query, 1);

  cass_statement_bind_string(statement, 0, key);

  future = cass_session_execute(session, statement);
  cass_future_wait(future);

  rc = cass_future_error_code(future);
  if (rc != CASS_OK) {
    print_error(future);
  } else {
    const CassResult* result = cass_future_get_result(future);
    CassIterator* iterator = cass_iterator_from_result(result);

    if (cass_iterator_next(iterator)) {
      cass_uint32_t d;
      cass_int64_t t;
      time_t time;
      const CassRow* row = cass_iterator_get_row(iterator);
      cass_value_get_uint32(cass_row_get_column(row, 1), &d);
      cass_value_get_int64(cass_row_get_column(row, 2), &t);

      time = (time_t)cass_date_time_to_epoch(d, t);

      printf("Date and time: %s", asctime(localtime(&time)));
    }

    cass_result_free(result);
    cass_iterator_free(iterator);
  }

  cass_future_free(future);
  cass_statement_free(statement);

  return rc;
}
Exemple #3
0
/* {{{ Cassandra\Date::toDateTime() */
PHP_METHOD(Date, toDateTime)
{
    cassandra_date *self;
    zval *ztime = NULL;
    cassandra_time* time_obj = NULL;
    php5to7_zval datetime;
    php_date_obj *datetime_obj = NULL;
    char *str;
    int str_len;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z", &ztime) == FAILURE) {
        return;
    }

    if (ztime != NULL) {
        time_obj = PHP_CASSANDRA_GET_TIME(ztime);
    }
    self = PHP_CASSANDRA_GET_DATE(getThis());

    PHP5TO7_ZVAL_MAYBE_MAKE(datetime);
    php_date_instantiate(php_date_get_date_ce(), PHP5TO7_ZVAL_MAYBE_P(datetime) TSRMLS_CC);

#if PHP_MAJOR_VERSION >= 7
    datetime_obj = php_date_obj_from_obj(Z_OBJ(datetime));
#else
    datetime_obj = zend_object_store_get_object(datetime TSRMLS_CC);
#endif

    str_len = spprintf(&str, 0, "%lld",
                       cass_date_time_to_epoch(self->date,
                               time_obj != NULL ? time_obj->time : 0));
    php_date_initialize(datetime_obj, str, str_len, "U", NULL, 0 TSRMLS_CC);
    efree(str);

    RETVAL_ZVAL(PHP5TO7_ZVAL_MAYBE_P(datetime), 0, 1);
}
Exemple #4
0
/* {{{ Cassandra\Date::seconds() */
PHP_METHOD(Date, seconds)
{
    cassandra_date *self = PHP_CASSANDRA_GET_DATE(getThis());

    RETURN_LONG(cass_date_time_to_epoch(self->date, 0));
}
TEST(DateTimeUnitTests, DateTimeToEpoch) {
  EXPECT_EQ(cass_date_time_to_epoch(CASS_DATE_EPOCH, 0), 0L); // Epoch
  EXPECT_EQ(cass_date_time_to_epoch(CASS_DATE_EPOCH - 1, 0), -24L * 3600L); // Epoch - 1 day
  EXPECT_EQ(cass_date_time_to_epoch(CASS_DATE_EPOCH + 1, 0), 24L * 3600L); // Epoch + 1 day
}
TEST(DateTimeUnitTests, Simple) {
  time_t now = ::time(NULL);
  cass_uint32_t date = cass_date_from_epoch(now);
  cass_int64_t time = cass_time_from_epoch(now);
  EXPECT_EQ(cass_date_time_to_epoch(date, time), now);
}