180

I need to get the current date, time, and day using Laravel.

I tried to echo $ldate = new DateTime('today'); and $ldate = new DateTime('now');

But it is always returning 1.

How can I get the current date, time, and day?

miken32
  • 42,008
  • 16
  • 111
  • 154
AngularAngularAngular
  • 3,589
  • 5
  • 25
  • 41
  • 2
    I think the main problem is that you're doing `echo $now = new DateTime();` whereas instead you should just set the variable without the `echo` (i.e. do `$now = new DateTime();`) and then when you want to echo it you need to use the `format()` method ([docs](http://php.net/manual/en/datetime.format.php)): `echo $now->format('Y-m-d');` – alexrussell Jan 23 '15 at 12:21

22 Answers22

316

Laravel has the Carbon dependency attached to it.

Carbon::now(), include the Carbon\Carbon namespace if necessary.

Edit (usage and docs)

Say I want to retrieve the date and time and output it as a string.

$mytime = Carbon\Carbon::now();
echo $mytime->toDateTimeString();

This will output in the usual format of Y-m-d H:i:s, there are many pre-created formats and you will unlikely need to mess with PHP date time strings again with Carbon.

Documentation: https://github.com/briannesbitt/Carbon

String formats for Carbon: http://carbon.nesbot.com/docs/#api-formatting

chepe263
  • 2,774
  • 22
  • 38
Everon
  • 3,789
  • 1
  • 12
  • 12
102

Try this,

$ldate = date('Y-m-d H:i:s');
Vinod VT
  • 6,946
  • 11
  • 51
  • 75
  • This is the kind of php way, how can i go for laravel way – AngularAngularAngular Jan 23 '15 at 12:05
  • 21
    @Chennai Why do you need it to do the "laravel" way? Laravel is the "php way" :) – Mārtiņš Briedis Jan 23 '15 at 12:14
  • 4
    When you have access to classes like Carbon that are fully tested it's always useful to utilise them. Why reinvent the wheel when there's already a robust implementation that does what you need and more? – Everon Jan 23 '15 at 12:15
  • 4
    @Everon Using built in core functions is not reinventing the wheel. People always want to overcomplicate things :S – Mārtiņš Briedis Jan 23 '15 at 12:18
  • 1
    Lets say down the road after you've finished your project you find that you need to implement timezones in your dates to allow different users to have the correct times. Would you want to go back and recode every time you have a date/time field pop up? I doubt it. `date` returns a string, there are core functions too allow parsing of the string but why limit yourself in that way in terms of flexibility? Check out the Carbon docs. – Everon Jan 23 '15 at 12:21
  • 4
    You just set the right timezone in global config and that's it, the same way as carbon works. It's just silly to do things "laravel way", because it looks more fancy? How is this `\Carbon\Carbon::now()->format('d.m.Y');` better than `date('d.m.Y')` ? – Mārtiņš Briedis Jan 23 '15 at 12:25
  • 2
    Thanks So, the `date('Y-m-d H:i:s')` won't hurt by anyway right ? – AngularAngularAngular Jan 23 '15 at 12:44
  • @MārtiņšBriedis The Laravel / Carbon way does have its benefits. For example if you want to use their useful wrapper functions to manipulate date objects you can easily do this with very readable code and it also handles timezone issues and other tedious date formatting. If its part of the framework then its always good to use the abstractions. – user3574492 Mar 10 '18 at 17:02
71

Php has a date function which works very well. With laravel and blade you can use this without ugly <?php echo tags. For example, I use the following in a .blade.php file...

Copyright © {{ date('Y') }}

... and Laravel/blade translates that to the current year. If you want date time and day, you'll use something like this:

{{ date('Y-m-d H:i:s') }}
Menasheh
  • 3,560
  • 3
  • 33
  • 48
25

If you want to use datetime class do:

$dt = new DateTime();
echo $dt->format('Y-m-d H:i:s');

The documentation for reference.

francisco
  • 1,387
  • 2
  • 12
  • 23
whyguy
  • 784
  • 7
  • 11
18

From Laravel 5.5 you can use now() function to get the current date and time.

In blade file, you can write like this to print date.

{{  now()->toDateTimeString('Y-m-d') }}

enter image description here

For more information check doc

Jigar
  • 3,055
  • 1
  • 32
  • 51
9

Here is another way to do this

Use \Carbon\Carbon;

$date = Carbon::now();

echo $date->toRfc850String();

Output will be like this

Saturday, 11-May-19 06:28:04 UTC
Amit Kumar
  • 249
  • 3
  • 10
6

How about

    $date = Carbon::now();
    return $date->toArray();

will give you

{
  "year": 2019,
  "month": 1,
  "day": 27,
  "dayOfWeek": 0,
  "dayOfYear": 26,
  "hour": 10,
  "minute": 28,
  "second": 55,
  "englishDayOfWeek": "Sunday",
  "micro": 967721,
  "timestamp": 1548570535,
  "formatted": "2019-01-27 10:28:55",
  "timezone": {
    "timezone_type": 3,
    "timezone": "Asia/Dubai"
  }
}

The same props are accessible through


    return [
             'date' => $date->format('Y-m-d'),
              'year' => $date->year,
              'month' => $date->month,
              'day' => $date->day,
              'hour' => $date->hour,
              'isSaturday' => $date->isSaturday(),
          ];

f_i
  • 3,084
  • 28
  • 31
5

FOR LARAVEL 5.x

I think you were looking for this

$errorLog->timestamps = false;
$errorLog->created_at = date("Y-m-d H:i:s");
Udhav Sarvaiya
  • 9,380
  • 13
  • 53
  • 64
4

You can try this.

use Carbon\Carbon;

$date = Carbon::now()->toDateTimeString();
Sheetal Mehra
  • 478
  • 3
  • 13
4

I prefer to use a built-in PHP function. if you want to get timestamp format such as "2021-03-31" you can write code like this

$date = date('Y-m-d', time());

for the time you can write like this

$date = date('H:i:s', time());

for the day you can write like this

$date = date('l', time()); // lowercase of L

function time() will give you the current UNIX time and you convert it to whatever format you need.

So, you don't need any third-party package anymore :)

You can read more about UNIX time in this Wikipedia page and convert it in this webiste

Last, for the formatting, you can visit the w3schools page.

4

I use now() on laravel 8 to create a user

User::create([
   'name'=>'admin',
   'email'=>'admin@email.test',
   'email_verified_at'=>now(),
   'password'=>bcrypt('123456'),
]);
Riki krismawan
  • 503
  • 1
  • 3
  • 10
2

You have a couple of helpers.

The helper now() https://laravel.com/docs/7.x/helpers#method-now

The helper now() has an optional argument, the timezone. So you can use now:

now();

or

now("Europe/Rome");

In the same way you could use the helper today() https://laravel.com/docs/7.x/helpers#method-today. This is the "same thing" of now() but with no hours, minutes, seconds.

At the end, under the hood they use Carbon as well.

2

data

return now()->toDateString();

Time

return now()->toTimeString(); 
ali hassan
  • 321
  • 2
  • 5
2

Try this,

$tmp = (new DateTime)->format('d-m-Y');
echo $tmp;

to Timestamp.

$kTsp = (new DateTime)->getTimestamp();
echo $kTsp;
drodriguez
  • 150
  • 2
  • 5
1
use DateTime;

$now = new DateTime();
Zina Taklit
  • 89
  • 2
  • 11
1

It's very simple:

Carbon::now()->toDateString()

This will give you a perfectly formatted date string such as 2020-10-29.

In Laravel 5.5 and above you can use now() as a global helper instead of Carbon::now(), like this:

now()->toDateString()
Paul Denisevich
  • 2,329
  • 14
  • 19
1

Laravel Blade View:

{{\Carbon\Carbon::now()->format('d-m-Y')}}

With timezone:

{{\Carbon\Carbon::now("Asia/Tokyo")->format('d-m-Y')}}

Format available list: https://www.php.net/manual/en/datetime.format.php

Timezone available list: https://www.php.net/manual/en/timezones.php

Trần Hữu Hiền
  • 872
  • 1
  • 9
  • 22
1

If you need the date directly in a input value of your view this can help you: (myview .blade.php)

<input type="date" name="Date" value="{{date('Y-m-d', time())}}">
Heterocigoto
  • 183
  • 2
  • 11
0
//vanilla php
Class Date {
    public static function date_added($time){
         date_default_timezone_set('Africa/Lagos');//or choose your location
        return date('l F Y g:i:s ',$time);

    }


}
jacob
  • 25
  • 1
  • 5
0

You can set the timezone on you AppServicesProvider in Provider Folder

public function boot()
{
    Schema::defaultStringLength(191);
    date_default_timezone_set('Africa/Lagos');
}

and then use Import Carbon\Carbon and simply use Carbon::now() //To get the current time, if you need to format it check out their documentation for more options based on your preferences enter link description here

-1

You can use today() function.

$today = today('Europe/London');
$dayOfYear = $today->dayOfYear;
$dayOfWeek = $today->dayOfWeek;
francisco
  • 1,387
  • 2
  • 12
  • 23
Ashish
  • 1
  • 1
-1

today data and time

return now::();

time

return now()->toTimeString();
ali hassan
  • 321
  • 2
  • 5
  • Hi ali, with 21 other answers already present, it would be great if you could add an explanation to your code to help us understand how it is different from other answers and how it solves the problem in the way that other answers dont. Thanks! – Simas Joneliunas Feb 18 '22 at 01:37