Emperon
Emperon

Reputation: 91

PHP date limit 1970

I'm programming a site about genealogy, I used the date input to acquire dates, and

$datamm= strftime('%Y-%m-%d', strtotime($_POST['datamm']));

to convert the dates for the database, but the minimum value that I can get is 1970-01-01. I need to acquire dates between 1500 and current day.

What can I do to solve the problem?? I prefer procedural solution if it is possible.

Upvotes: 1

Views: 1122

Answers (4)

Aleksandar Pavić
Aleksandar Pavić

Reputation: 3440

You should probably focus on using some 3rd party library instead of official PHP's datetime functions.

For example, for your advanced date-time manipulating requirements, a good alternative for PHP's standard datetime would be moment.php

It's inspired by moment.js library whose goal is to fix common date-time programming issues, and bring standardization to higher level.

You can obtain it via composer like:

{
  "require": {
    "fightbulc/moment": "*"
  }
}

Or via github for manual installation.

To parse various input date consult a manual, below is example:

$m = new \Moment\Moment('1503-04-25T03:00:00', 'CET');

There is also other alternatives to explore, for example: https://github.com/swt83/php-date

Upvotes: 0

Dave
Dave

Reputation: 3091

Try this, use createFromFormat

// pass your date format 
$date = DateTime::createFromFormat('d M Y','17 Jan 1500');
echo $date->format('Y-m-d');

DEMO

Upvotes: 0

Abhay Maurya
Abhay Maurya

Reputation: 12277

If you know that in which format your date is coming from input then you can try:

$datamm = DateTime::createFromFormat('j-M-Y', $_POST['datamm']);//You know that date is coming in j-M-Y format
echo $date->format('Y-m-d'); // You can save in Y-m-d format in database

if you are taking timestamp as input then :

$date = date('Y-m-d',$_POST['datamm']);//you are taking timestamp like : 30000000000 as an input
echo $date;//make in database in Y-m-d format

I hope it helps

Upvotes: 0

Blinkydamo
Blinkydamo

Reputation: 1584

Here is an example,

<?php 
  $date = new DateTime( '01-01-1950' );
  echo $date->format( 'Y-m-d' );
?>

DateTime is great, you can do all sorts once you understand it.

For instance, this will add a year and echo the start and end dates,

<?php 
  $date = new DateTime( '01-01-1950' );
  echo $date->format( 'Y-m-d' )."\n";
  $date->modify( '+1 years' );
  echo $date->format( 'Y-m-d' );
?>

Upvotes: 1

Related Questions