将自然语言的日期用PHP解析

将自然语言的日期用PHP解析,第1张

代码如下

<php

$date_str = "明天下午两点半";

$date_str = "后天早上八点三十一";

echo $date_str"&nbsp;&nbsp;";

date_default_timezone_set("PRC");

//获取当天零点的时间

$time = strtotime(date("Y-m-d"));

//数字中文对照

$num_lang=array('零', '一', '二|两', '三', '四', '五', '六', '七', '八', '九', 30=>'半');

//时间段中文言对照

$date_lang=array(

array("下午|晚上|深夜", 360012),

array("凌晨|上午|早晨|早上", 0),

array("大后天", 3600243),

array("大前天", -3600243),

array("后天", 3600242),

array("前天", -3600242),

array("明天", 360024),

array("昨天", -360024),

);

//累加移动的时间差

$tmp_str = $date_str;

foreach ($date_lang as $date ) {

$lang_str = $date[0];

$lang_arr = explode("|", $lang_str);

$period = $date[1];

foreach ($lang_arr as $lang ) {

if (strpos($tmp_str, $lang)!==false) {

$time += $period;  

$tmp_str = str_replace($lang, "", $tmp_str);

}

}

}

//中文替换成数字

foreach ($num_lang as $num => $lang_str) {

$lang_arr =explode("|", $lang_str);

foreach ($lang_arr as $lang) {

$tmp_str = str_replace($lang, $num, $tmp_str);

}

}

$tmp_str = preg_replace('/(\d+)十(\d)/', "$1$2",$tmp_str);

$tmp_str = preg_replace('/(\d+)十/', "\${1}0", $tmp_str);

$tmp_str = preg_replace('/十(\d)/', "1$1", $tmp_str);

//捕获时分

preg_match('/(\d+)点(\d)/', $tmp_str, $hur_min);

$hour = (int) $hur_min[1];

$min = (int) $hur_min[2];

$time += $hour3600+($min60);

//输出结果

print_r(date("Y-m-d H:i", $time));

>

public function index(){

$data=time();

$format='星期';

$week = date( "D",$data);

switch($week){

      case "Mon":$current  =  $format"一";break;

      case "Tue":$current  =  $format"二";break;

      case "Wed":$current  =  $format"三";break;

      case "Thu":$current  =  $format"四";break;

      case "Fri":$current  =  $format"五";break;

      case "Sat":$current  =  $format"六";break;

      case "Sun":$current  =  $format"日";break;

}

      echo '今天是:'$current;echo "

";//获取当前时间是上午还是下午

// 小写g、h表示12小时制,大写G、H表示24小时制。

echo "现在是"date("H",$data)'点'"";

echo "现在是"date("G",$data)'点'"";

if(date("H",$data)<=12){echo "上午";}else{echo "下午";}// return $current;}

实现sql代码如下:

1) select from 表名 where 时间间字段 between date() and cdate(format(date(),'yyyy-mm-dd') & ' 23:59:59');

2) select from 表名 where 期间字段 between date() and now();

你好,

两个时间戳比较简单,new两个当前date对象,将时、分,分别设置为零点和23:59分,再gettime就可以了。只接代码:

var zero = new date();

var eleven = new date();

zerosethours(0);

zerosetminutes(0);

zerosetseconds(0);

elevensethours(23);

elevensetminutes(59);

elevensetseconds(0);

consolelog('今天零点:' + zerogettime());

consolelog('23:59:' + elevengettime());希望解决了你的问题,如有疑问可追问!

Date类。

方法1、获取当天的年月日,然后自己算差多少天。难点在于得考虑每个月多少天。

方法2、获取当天凌晨12点的毫秒数(获取当天的年月日然后用setTime方法),以及目标那天凌晨12点的毫秒数(setTime方法),相减,除以一天的毫秒数2460601000,就是相差的天数。难点在于Date类的熟练应用。

Date类的使用可参考:

>

1、首先在电脑上创建一个indexphp文件,编辑indexphp。

2、然后输入获取当天零点的时间戳,输入代码$today = strtotime(date("Y-m-d"),time());$time = strtotime($today);//获取到echo $time"<br />";//输出。

3、获取当天24点的时间戳$todayEnd = $today+606024;//家一天的时间echo $time = strtotime($todayEnd)"<br />";//输出。

4、获取前一天时间echo date("Y-m-d H:i:s",strtotime("-1 days"));。

5、以上即时间戳和前一天时间的获取。主要是对date()和strtotime()函数的灵活使用,就可以了。

以上就是关于将自然语言的日期用PHP解析全部的内容,包括:将自然语言的日期用PHP解析、PHP获取当天或某个日期是星期几以及当前时间是几点,上午还是下午、access 应该怎样获取当天0点,到23点59分59秒之间 表中所有符合这个时间段的记录数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9324489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存