উত্তর:
এই পদ্ধতি কাজ করে উভয় উইন্ডোজ এবং ইউনিক্স এবং হয় সময় অঞ্চল সম্ভবত হলে আপনার সাথে কাজ কি আপনি চান সচেতন, তারিখ ।
আপনি যদি সময় অঞ্চল সম্পর্কে চিন্তা না করেন বা আপনার সার্ভারটি যে সময় অঞ্চল ব্যবহার করে তা ব্যবহার করতে চান:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (এটি আপনার সার্ভারের সময় অঞ্চলের উপর নির্ভর করে পৃথক হবে ...)
আপনি যদি কোন সময় অঞ্চলে নির্দিষ্ট করতে চান তবে এখানে EST। (নিউ ইয়র্ক হিসাবে একই।)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
অথবা ইউটিসি ব্যবহার করতে চাইলে । (" GMT " হিসাবে একই ।)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
নির্বিশেষে, কাঠামোগত ডেটাগুলিতে স্ট্রিংগুলি পার্স করার সময় কঠোর হওয়া সর্বদা একটি ভাল সূচনার পয়েন্ট। এটি ভবিষ্যতে বিশ্রী ডিবাগিং সংরক্ষণ করতে পারে। তাই আমি সর্বদা তারিখের ফর্ম্যাট নির্দিষ্ট করার পরামর্শ দিই।
এখানে স্ট্র্যাপটাইম () রয়েছে যা ঠিক এক ফর্ম্যাটকে প্রত্যাশা করে:
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
date_parse_from_format
পরিবর্তে এর পরিবর্তে ব্যবহার বিবেচনা করুন strptime
।
strptime
উইন্ডোজ প্ল্যাটফর্মগুলিতে প্রয়োগ করা হয়নি।
সঙ্গে DateTime
এপিআই :
$dateTime = new DateTime('2008-09-22');
echo $dateTime->format('U');
// or
$date = new DateTime('2008-09-22');
echo $date->getTimestamp();
পদ্ধতিগত API এর সাথে একই:
$date = date_create('2008-09-22');
echo date_format($date, 'U');
// or
$date = date_create('2008-09-22');
echo date_timestamp_get($date);
যদি উপরেরটি ব্যর্থ হয় কারণ আপনি একটি অসমর্থিত ফর্ম্যাট ব্যবহার করছেন , আপনি ব্যবহার করতে পারেন
$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U');
// or
$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');
মনে রাখবেন যে আপনি যদি সেট না করে থাকেন !
তবে সময়ের অংশটি বর্তমান সময়ের জন্য সেট করা হবে যা প্রথম চারটির থেকে আলাদা যা আপনি সময় বাদ দিলে মধ্যরাতটি ব্যবহার করবেন।
তবুও অন্য বিকল্পটি হ'ল IntlDateFormatter
এপিআই ব্যবহার করা :
$formatter = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'GMT',
IntlDateFormatter::GREGORIAN,
'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');
আপনি যদি স্থানীয়করণের তারিখের স্ট্রিংগুলির সাথে কাজ না করেন তবে সহজ পছন্দ সম্ভবত ডেটটাইম is
!
আমার তারিখ ভিত্তিক টাইমস্ট্যাম্প প্রতিটি রিফ্রেশের পরিবর্তিত হয়ে আমাকে পাগল করছে - কারণ ডেটটাইম সাহায্যের সাথে জিজ্ঞাসা বা না বলা বর্তমান সময়ের যোগ করছিল। গরগর।
এই জাতীয় ফাংশন সম্পর্কে সতর্ক থাকুন strtotime()
আপনার অর্থ কী "অনুমান" করার চেষ্টা করুন (এটি অবশ্যই অনুমান করে না, নিয়মগুলি এখানে রয়েছে )।
এটি কেবল যুক্তিসঙ্গত জিনিস হওয়ায় প্রকৃতপক্ষে ২২ সেপ্টেম্বর ২০০৮22-09-2008
হিসাবে পার্স করা হবে।
কিভাবে 08-09-2008
পার্স করা হবে ? সম্ভবত 09 আগস্ট 2008 ।
কি হবে 2008-09-50
? পিএইচপি এর কিছু সংস্করণ এটিকে 20 অক্টোবর 2008 হিসাবে পার্স করে ।
সুতরাং, আপনি যদি নিশ্চিত হন যে আপনার ইনপুটটি DD-MM-YYYY
ফর্ম্যাটে রয়েছে তবে @ আর্মিন রোনাচারের দেওয়া প্রস্তাবটি ব্যবহার করা আরও ভাল ।
dd-mm-yyyy
, না mm-dd-yyyy
।
YYYY-mm-dd
কেবল রূপান্তরকারীদের দেখানোর জন্যই ঘটে
এই পদ্ধতি কাজ করে উভয় উইন্ডোজ এবং ইউনিক্স এবং হয় সময় অঞ্চল সম্ভবত হলে আপনার সাথে কাজ কি আপনি চান সচেতন, তারিখ ।
আপনি যদি সময় অঞ্চল সম্পর্কে চিন্তা না করেন বা আপনার সার্ভারটি যে সময় অঞ্চল ব্যবহার করে তা ব্যবহার করতে চান:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (এটি আপনার সার্ভারের সময় অঞ্চলের উপর নির্ভর করে পৃথক হবে ...)
আপনি যদি কোন সময় অঞ্চলে নির্দিষ্ট করতে চান তবে এখানে EST। (নিউ ইয়র্ক হিসাবে একই।)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
অথবা ইউটিসি ব্যবহার করতে চাইলে । (" GMT " হিসাবে একই ।)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
নির্বিশেষে, কাঠামোগত ডেটাগুলিতে স্ট্রিংগুলি পার্স করার সময় কঠোর হওয়া সর্বদা একটি ভাল সূচনার পয়েন্ট। এটি ভবিষ্যতে বিশ্রী ডিবাগিং সংরক্ষণ করতে পারে। তাই আমি সর্বদা তারিখের ফর্ম্যাট নির্দিষ্ট করার পরামর্শ দিই।
এমকিটাইম ব্যবহার :
list($day, $month, $year) = explode('-', '22-09-2008');
echo mktime(0, 0, 0, $month, $day, $year);
strtotime()
কোনও কারণে strtotime()
নির্দিষ্ট তারিখগুলিতে কাজ করে না তার থেকে এটি অনেক ভাল and তাই এটি খুব অবিশ্বাস্য।
স্ট্রোটোটাইম () ফাংশন ব্যবহার করে আপনি সহজেই তারিখকে টাইমস্ট্যাম্পে রূপান্তর করতে পারেন
<?php
// set default timezone
date_default_timezone_set('America/Los_Angeles');
//define date and time
$date = date("d M Y H:i:s");
// output
echo strtotime($date);
?>
আরও তথ্য: http://php.net/manual/en/function.strtotime.php
অনলাইন রূপান্তর সরঞ্জাম: http://freeonlinetools24.com/
ফাংশন split
এবং mtime
ফাংশন ব্যবহার করে এখানে একটি খুব সহজ এবং কার্যকর সমাধান :
$date="30/07/2010 13:24"; //Date example
list($day, $month, $year, $hour, $minute) = split('[/ :]', $date);
//The variables should be arranged according to your date format and so the separators
$timestamp = mktime($hour, $minute, 0, $month, $day, $year);
echo date("r", $timestamp);
এটি আমার জন্য কবজির মতো কাজ করেছিল।
প্রদত্ত ফাংশনটি strptime()
উইন্ডোজের জন্য কাজ করে না এবং strtotime()
অপ্রত্যাশিত ফলাফলগুলি ফিরে আসতে পারে, আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি date_parse_from_format()
:
$date = date_parse_from_format('d-m-Y', '22-09-2008');
$timestamp = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']);
যদি আপনি নিশ্চিতভাবে জানতে চান যে কোনও তারিখ আপনার প্রত্যাশিত কিছুতে পার্স হয়েছে কিনা, আপনি ব্যবহার করতে পারেন DateTime::createFromFormat()
:
$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
if ($d === false) {
die("Woah, that date doesn't look right!");
}
echo $d->format('Y-m-d'), PHP_EOL;
// prints 2008-09-22
এটি এক্ষেত্রে সুস্পষ্ট, তবে 03-04-2008
আপনি কোথা থেকে এসেছেন তার উপর নির্ভর করে ২ য় এপ্রিল বা মার্চ 4 হতে পারে :)
আপনি বিন্যাস ব্যবহার করুন জানেন তাহলে strptime
কারণ strtotime
বিন্যাস, যা সবসময় সঠিক নাও হতে পারে জন্য একটি অনুমান আছে। strptime
উইন্ডোজ যেহেতু বাস্তবায়িত হয় না তাই একটি কাস্টম ফাংশন রয়েছে
মনে রাখবেন যে ফেরতের tm_year
মূল্য 1900 থেকে! এবং tm_month
0-11 হয়
উদাহরণ:
$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900)
<?php echo date('M j Y g:i A', strtotime('2013-11-15 13:01:02')); ?>
$time = '22-09-2008';
echo strtotime($time);
পিএইচপি ফাংশন ব্যবহার করুন strtotime()
echo strtotime('2019/06/06');
function date_to_stamp( $date, $slash_time = true, $timezone = 'Europe/London', $expression = "#^\d{2}([^\d]*)\d{2}([^\d]*)\d{4}$#is" ) {
$return = false;
$_timezone = date_default_timezone_get();
date_default_timezone_set( $timezone );
if( preg_match( $expression, $date, $matches ) )
$return = date( "Y-m-d " . ( $slash_time ? '00:00:00' : "h:i:s" ), strtotime( str_replace( array($matches[1], $matches[2]), '-', $date ) . ' ' . date("h:i:s") ) );
date_default_timezone_set( $_timezone );
return $return;
}
// expression may need changing in relation to timezone
echo date_to_stamp('19/03/1986', false) . '<br />';
echo date_to_stamp('19**03**1986', false) . '<br />';
echo date_to_stamp('19.03.1986') . '<br />';
echo date_to_stamp('19.03.1986', false, 'Asia/Aden') . '<br />';
echo date('Y-m-d h:i:s') . '<br />';
//1986-03-19 02:37:30
//1986-03-19 02:37:30
//1986-03-19 00:00:00
//1986-03-19 05:37:30
//2012-02-12 02:37:30
<?php echo date('U') ?>
আপনি যদি চান তবে এটি একটি মাইএসকিউএল ইনপুট টাইপ টাইমস্ট্যাম্পে রাখুন। উপরেরগুলি খুব ভাল কাজ করে (কেবল পিএইচপি 5 বা তারপরে):
<?php $timestamp_for_mysql = date('c') ?>
এটি আমি এখানে কীভাবে করব:
function dateToTimestamp($date, $format, $timezone='Europe/Belgrade')
{
//returns an array containing day start and day end timestamps
$old_timezone=date_timezone_get();
date_default_timezone_set($timezone);
$date=strptime($date,$format);
$day_start=mktime(0,0,0,++$date['tm_mon'],++$date['tm_mday'],($date['tm_year']+1900));
$day_end=$day_start+(60*60*24);
date_default_timezone_set($old_timezone);
return array('day_start'=>$day_start, 'day_end'=>$day_end);
}
$timestamps=dateToTimestamp('15.02.1991.', '%d.%m.%Y.', 'Europe/London');
$day_start=$timestamps['day_start'];
এইভাবে, আপনি ফাংশনটিকে আপনি কী তারিখের ফর্ম্যাটটি ব্যবহার করছেন তা জানাতে এবং এমনকি সময় অঞ্চল নির্ধারণ করতে দিয়েছেন।
আপনি যদি ডেটাবেসে তারিখগুলি সংরক্ষণ করার জন্য সেট করে থাকেন তবে সময় / অঞ্চল সম্পর্কে সতর্ক হন, কারণ আমি যখন মাইএসকিএল থেকে তারিখগুলি তুলনায় timestamp
ব্যবহার করে রূপান্তরিত করি তখন আমার সমস্যা হয়strtotime
। তারিখকে টাইমস্ট্যাম্পে রূপান্তর করার আগে আপনাকে অবশ্যই একই সময় / অঞ্চলটি ব্যবহার করতে হবে, অন্যথায়, স্ট্রোটটাইম () ডিফল্ট সার্ভারের সময় অঞ্চল ব্যবহার করবে।
দয়া করে এই উদাহরণটি দেখুন: https://3v4l.org/ BRlmV
function getthistime($type, $modify = null) {
$now = new DateTime(null, new DateTimeZone('Asia/Baghdad'));
if($modify) {
$now->modify($modify);
}
if(!isset($type) || $type == 'datetime') {
return $now->format('Y-m-d H:i:s');
}
if($type == 'time') {
return $now->format('H:i:s');
}
if($type == 'timestamp') {
return $now->getTimestamp();
}
}
function timestampfromdate($date) {
return DateTime::createFromFormat('Y-m-d H:i:s', $date, new DateTimeZone('Asia/Baghdad'))->getTimestamp();
}
echo getthistime('timestamp')."--".
timestampfromdate(getthistime('datetime'))."--".
strtotime(getthistime('datetime'));
//getthistime('timestamp') == timestampfromdate(getthistime('datetime')) (true)
//getthistime('timestamp') == strtotime(getthistime('datetime')) (false)
আপনি যদি কোনও ইউটিসি ডেটটাইম ( 2016-02-14T12:24:48.321Z
) কে টাইমস্ট্যাম্পে রূপান্তর করতে চান, আপনি এখানে এটি কীভাবে করবেন:
function UTCToTimestamp($utc_datetime_str)
{
preg_match_all('/(.+?)T(.+?)\.(.*?)Z/i', $utc_datetime_str, $matches_arr);
$datetime_str = $matches_arr[1][0]." ".$matches_arr[2][0];
return strtotime($datetime_str);
}
$my_utc_datetime_str = '2016-02-14T12:24:48.321Z';
$my_timestamp_str = UTCToTimestamp($my_utc_datetime_str);