list box เลือกแสดงรูปแบบของวันที่ (Date Format )


แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
bankjittapol
PHP Super Member
PHP Super Member
Posts: 344
Joined: 21/10/2019 10:19 am

list box เลือกแสดงรูปแบบของวันที่ (Date Format )

Post by bankjittapol » 20/11/2019 6:55 pm

list box เลือกแสดงรูปแบบของวันที่ (Date Format )
Date Format คือ รูปแบบของวันที่ ที่แสดงผลในหน้าต่าง ซึ่งรูปแบบของวันที่จะเปลี่ยนไปตามที่ผู้ใช้นั้นเลือก ซึ่งรูปแบบของวันที่นั้นมีอยู่หลากหลายมาก ในที่นี้เป็นรูปแบบที่มีในภาษาที่ใช้ใน Joomla และสัญลักษณ์เป็นรูปแบบ function date() ของ PHP ซึ่งมีรูปแบบดังนี้

Code: Select all

DATE_FORMAT_LC="l, d F Y"
DATE_FORMAT_LC1="l, d F Y"
DATE_FORMAT_LC2="l, d F Y H:i"
DATE_FORMAT_LC3="d F Y"
DATE_FORMAT_LC4="Y-m-d"
DATE_FORMAT_LC5="Y-m-d H:i"
DATE_FORMAT_LC6="Y-m-d H:i:s"
DATE_FORMAT_JS1="y-m-d"
DATE_FORMAT_CALENDAR_DATE="%Y-%m-%d"
DATE_FORMAT_CALENDAR_DATETIME="%Y-%m-%d %H:%M:%S"
DATE_FORMAT_FILTER_DATE="Y-m-d"
DATE_FORMAT_FILTER_DATETIME="Y-m-d H:i:s"
ขั้นตอนการทำ list box เลือกแสดงรูปแบบวันที่
สร้างไฟล์ .xml และสร้าง field ชื่อ date_format ซึ่งเป็น list box เลือก

Code: Select all

	<field name="date_format"
					type="list"
					label="MOD_MWEATHER_FORECAST_SELECT_DATE_FORMAT"
					description="MOD_MWEATHER_FORECAST_SELECT_DATE_FORMAT_DESC">
				  <option value="DATE_FORMAT_LC">MOD_MWEATHER_FORECAST_SELECT_DATE_FORMAT_OPIOTN</option>
					<option value="DATE_FORMAT_LC1">DATE_FORMAT_LC1</option>
					<option value="DATE_FORMAT_LC2">DATE_FORMAT_LC2</option>
					<option value="DATE_FORMAT_LC3">DATE_FORMAT_LC3</option>
					<option value="DATE_FORMAT_LC4">DATE_FORMAT_LC4</option>
					<option value="DATE_FORMAT_LC5">DATE_FORMAT_LC5</option>
					<option value="DATE_FORMAT_LC6">DATE_FORMAT_LC6</option>
					<option value="DATE_FORMAT_JS1">DATE_FORMAT_JS1</option>
					<option value="DATE_FORMAT_CALENDAR_DATE">DATE_FORMAT_CALENDAR_DATE</option>
					<option value="DATE_FORMAT_CALENDAR_DATETIME">DATE_FORMAT_CALENDAR_DATETIME</option>
					<option value="DATE_FORMAT_FILTER_DATE">DATE_FORMAT_FILTER_DATE</option>
					<option value="DATE_FORMAT_FILTER_DATETIME">DATE_FORMAT_FILTER_DATETIME</option>
				</field>
สร้าง หน้า default.php ขึ้นมาเพื่อเขียนคำสั่ง php ให้ส่วนแสดงผล ซึ่งชุดคำสั่งนี้คำการดึงข้อมูลผลพยากรณ์อากาศ 7 วันมา วันที่จึงเป็นวันที่ของผลพยากรณ์อากาศ หากไม่เข้าใจส่วนนี้ แนะนำให้ศึกษา บทความ list box เพื่อเลือกจังหวัดที่ต้องการให้แสดงผลพยากรณ์อากาศ ก่อน

Code: Select all

$all =  json_decode($product, true);
$all_provinces = $all['Provinces'];


$select_provinces =  $params['selProvinces'];
$date_format =  $params['date_format'];


for ($i=0; $i < count($select_provinces) ; $i++) {
$provinces = $all_provinces[$select_provinces[$i]];
      $sevenDay = $provinces['SevenDaysForecast'];
?>

<div class="form-group test">
<div class="col-12">
  <div class="col-md-6">
    <?php  $ProvinceName = ($lang_tag=='th-TH') ? $provinces['ProvinceNameTh'] : $provinces['ProvinceNameEng']; ?>
    <h3 class="provinceName"><?php  echo $ProvinceName; ?></h3></div>
<div class="weather ">
  <?php  $WeatherDescription = ($lang_tag=='th-TH') ? $sevenDay[0]['WeatherDescription'] : $sevenDay[0]['WeatherDescriptionEn']; ?>
  <?php  $TempartureLevel = ($lang_tag=='th-TH') ? $sevenDay[0]['TempartureLevel'] : $sevenDay[0]['TempartureLevelEn']; ?>
  <span ><?php echo $WeatherDescription." ".$TempartureLevel; ?></span><br>
  <span><?php echo JTEXT::_('MOD_MWEATHER_FORECAST_RAIN_COVER')." ".$sevenDay[0]['Rain']['Value']."".$sevenDay[0]['Rain']['Unit']; ?></span><br>
  <span><?php echo JTEXT::_('MOD_MWEATHER_FORECAST_WIND_DIRESTION')." ".$sevenDay[0]['WindDirection']['Value']." ".JTEXT::_('MOD_MWEATHER_FORECAST_DEGREE')." ".$sevenDay[0]['WindSpeed']['Value']." ".$sevenDay[0]['WindSpeed']['Unit']; ?></span><br>
</div>
</div>
<div class="col-md-12">
  <span class="temp"><?php echo $sevenDay[0]['MaxTemperature']['Value']."°C "; ?></span>
</div>
<?php foreach ($sevenDay as $key => $aDay): ?>
<div class="test2">
  <?php
  list($d, $m, $y) = explode('/', $aDay['Date']);
  $dd = date($y.'-'.$m.'-'.$d);
  $date = new DateTime($dd);
$date_timestamp = $date->getTimestamp();
 ?>

  <span><?php echo JHtml::date($date_timestamp,JTEXT::_($date_format),true); ?></span>

  <span><?php echo $aDay['MaxTemperature']['Value']."°C / ".$aDay['MinTemperature']['Value']."°C"; ?></span>
</div>
<?php endforeach; ?>
</div>


<?php } ?>
ทั้งนี้จะขออธิบายในส่วนของการเลือกรูปแบบของวันที่เท่านั้น

Code: Select all

 
 $date_format =  $params['date_format'];
 
 list($d, $m, $y) = explode('/', $aDay['Date']);
  $dd = date($y.'-'.$m.'-'.$d);
  $date = new DateTime($dd);
$date_timestamp = $date->getTimestamp();
 ?>

  <span><?php echo JHtml::date($date_timestamp,JTEXT::_($date_format),true); ?></span>
$aDay['Date'] เก็บวันที่ ที่มีรูปแบบ เป็น 20/11/2019 ไว้ จึงต้องทำการแยกข้อมูลก่อน แล้วนำวันที่มาเรียงรูปแบบใหม่ แล้วทำการแปลงให้อยู่ในรูปของ Unix timestamp. แล้วทำการจัดรูปแบบใหม่ โดยกำหนดรูปแบบตามที่เลือกว่าที่เก็บไว้ใน $date_format

เมื่อเลือก รูปแบบ d F Y
Image

ผลลัพธ์ที่ได้
Image

เมื่อเลือก รูปแบบ l, d F Y
Image

ผลลัพธ์ที่ได้
Image

Return to “Joomla Developing Knowledge”

Users browsing this forum: No registered users and 2 guests