Search code examples
phpcodeigniterdatetimephp-carbon

Using Carbon api for date time codeigniter


I'm trying to use Carbon API(https://github.com/briannesbitt/Carbon) for my project in Codeigniter. But I am having trouble using it. I first installed it with composer. But when I use the following code in my project:

require 'vendor/autoload.php';
use Carbon\Carbon;
printf("Now: %s", Carbon::now());

I get the following error:

syntax error, unexpected 'use' (T_USE) in ...

So, I tried installing it manually(Copy and past the Carbon class file to my project). Then it worked fine when I tested the following code:

 $now = Carbon::now();
 die($now);

But when I try to run something like this:

$dtKtm = Carbon::createFromFormat('Y-m-d H:i:s', $data['banners'][0]['date_added']); 
echo Carbon::now()->diffForHumans($dtKtm, false);

It gives me " Class 'Translator' not found" error.

Can anyone help me fix this.


Solution

  • Carbon Date Time library usage with CodeIgniter

    CodeIgniter App setup:

    First let me give you an introduction about my CodeIgniter project setup on the localhost is as follows:

    /
    |- gheapp
    |    |- application
    |    |- system
    |    L- vendor
    |    |     |-bin
    |    |     |-composer
    |    |     |-nesbot/carbon
    |    |     |-symfony
    |    |
    |    |----- composer.json
    |    L----- composer.lock
    |
    |- public_html
    |    |- .htaccess
    |    L- index.php
    

    And in the index.php I have set up the following paths to the system and the application:

    $system_path = '../gheapp/system';
    $application_folder = '../gheapp/application';
    

    Note 1: by doing so, our application source code becomes hidden to the public at first.
    Note 2: For more nitty-gritty about my CodeIgniter setup please follow the following StackOverflow Answer of mine

    Step 1: how do I fetch the Carbon package.

    Using Composer I fetched the Cabron package to my CodeIgniter App. My composer.json looks like following (it's simplified for your ease).

    {
      "require": {
        "nesbot/carbon": "^1.22"
      }
    }
    

    After you run composer command composer install it creates the vendor folder within your CI app root and puts the Carbon package as shown above in the folder structure.

    Step 2: Autoload Composer downloaded Packages:

    In my index.php before the line at the bottom

    require_once BASEPATH.'core/CodeIgniter.php';
    

    I have put the following two lines:

    $composer_vendor_path = '../gheapp/vendor';
    require_once $composer_vendor_path.'/autoload.php';
    

    So now my CodeIgniter app knows how and where to load the composer installed Packages.

    Step 3: how do I use the Carbon package within my controller:

    Within any method function of my controller (or model) I can use Carbon as follows:

        $date = Carbon\Carbon::today();
        echo $date;   // output:  2017-01-21 00:00:00
        echo '<br/>'.$date->diffForHumans();  // output: 7 hours ago
    

    For further details about using Carbon please visit the following link: Carbon from nesBot

    I hope my answer will be useful/helpful to somebody else out there in the future! :-)