// pase_date_string.cpp : Defines the entry point for the console application.
//版权所有:吴建凰
#include "stdafx.h"
#include <iostream.h>
int monthday[12]={31,29,31,30,31,30,31,31,30,31,30,31};
bool parse_date_string(const char * date_string,int * year,int * month,int * day){
int len=0;
const char *str=date_string;
while(str[len])//计算日期字符串的长度
len++;
if(len<8 || len>10)
return false;
int date[3]={0};//存放格式为 月日年
len=0;
int i=0;
int temp=0;//临时变量,用于保存提取出来的数
bool err=false;
while(str[len]&& i<3 ){//把字符中的年月日提取出来
err=true;//先假设有错误
if(str[len]<='9' && str[len]>='0' ){//如果当前字符不是数字
temp=temp*10+str[len]-'0';//把字符数组转换成数字
err=false;//标记为没有错误
}
if(str[len]=='-' || str[len]=='/' || str[len+1]=='/0'){//把对应的数字提取出来了
if(temp>1000 && date[2]==0){//如果提起的是年
date[2]=temp;
}
else{
date[i++]=temp;
}
temp=0;//临时变量归位为0
}
else if(err){//假设没有被清除,即出现错误了
return false;
}
len++;
}
//计算二月的日期
if(date[2]&3 ){//date[2]&3 = date[2]%4
monthday[1]=28;
}
else{//为闰年
monthday[1]=29;
}
//判断提取的年月日是否出错
if(date[0]>12 || date[1]>monthday[date[0]] || date[2]<1000 ){
return false;
}
*year=date[2];
*month=date[0];
*day=date[1];
return true;//返回成功标志
}
int main(int argc, char* argv[])
{
int i=0;
int year;
int month;
int day;
if(parse_date_string("2009-9-8",&year,&month,&day)){
cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
}
else
cout<<"日期格式错误"<<endl;
return 0;
}
分享到:
相关推荐
这个标题非常直观,意味着文章的主体内容将围绕编写一个函数,该函数的目的是在给定的字符串中查找并提取出符合年月日格式的日期信息。标题也隐含了函数的实现将会使用到正则表达式技术,因为这是处理此类字符串操作...
在C#编程中,从身份证号码中提取出生日期是一项常见的任务,这主要涉及到字符串处理和对身份证号码编码规则的理解。身份证号码是中国公民的唯一身份标识,它由18位数字组成,包含了丰富的个人信息,其中第7位到第14...
在描述中提到的“将一年中的一天转换为相应的月和日”,实际上就是从'YYYY-MM-DD'格式的日期字符串中提取出月和日的部分。 要完成这个转换,我们可以使用以下步骤: 1. 首先,创建一个`datetime`对象,将字符串...
这里通过`ToString`方法可以将日期格式化为不同的字符串形式,其中`"yyyy-MM-dd"`表示四位数的年份、两位数的月份和日期,而`"yyyyMMdd"`则是一种更紧凑的格式。 2. **其他日期格式化示例**: ```csharp string ...
在FastReport中,用户可以利用内置函数来实现日期时间的提取和展示,例如提取某个字段中的年份、月份和日期,并将这些值以自定义的格式显示出来。 根据题目提供的部分代码示例:`[YearOf()][MonthOf()][DayOf()]`,...
通过设置适当的`unitFlags`,可以从当前日期中提取出所需的日期部分,并进行格式化处理,形成符合需求的日期字符串。这个过程在日常的iOS应用开发中非常常见,特别是在处理用户输入、显示日期信息或者记录日志时。
Excel 表中身份证号码提取出生年月、性别、年龄的使用技巧是基于身份证号码中包含的信息,将其提取出来。身份证号码中包含了出生年月日、性别等信息,本文将介绍如何使用 Excel 函数来提取这些信息。 身份证号码...
可以使用条件检查和`fillna()`函数来处理缺失值,或者使用`str.extract()`和正则表达式来解析不规则的日期字符串。 此外,如果Excel文件很大,可能会考虑使用`pandas.read_excel()`的`chunksize`参数分块读取数据,...
- **长度检查**:日期字符串应该为8位数字(YYYYMMDD),如果不是,则返回0。 - **正则表达式检查**:使用正则表达式验证字符串是否全由数字组成,如果不是,则返回0。 - **分割并解析年月日**:使用`SUBSTR`函数...
- `v = DateValue(x)` 解析日期字符串。 - `v = timevalue(x)` 解析时间字符串。 #### 3. Year(x), Month(x), Day(x): 获取年月日 - **功能**: 从日期中提取年、月、日。 - **参数**: - `x`: 日期。 - **示例**...
- 描述:此函数用于提取日期或时间中的特定部分,如年、月、日等。 - 示例:`SELECT DATEPART(mm, GETDATE())` 返回当前月份的数字表示,如 `10` 表示十月。 #### 示例代码 ```sql -- 创建一个表,其中记录包含有...
在SQL Server中,根据年月日生成编号是一种常见的需求,特别是在需要对数据进行时间序列管理或跟踪时。本文将深入探讨如何在SQL Server环境中实现这一功能,并解释所提供代码片段的具体含义与工作原理。 ### 一、...
- 使用`java.text.SimpleDateFormat`类将当前日期转换为字符串形式,并从中提取年、月、日信息。 - `format.format(date).substring(0,4)`:获取当前年份。 - `format.format(date).substring(5,7)`:获取当前月份...
例如,使用`setDateFormat:`方法可以设置自定义的日期格式,如"yyyy-MM-dd HH:mm:ss",这样就能得到2022-05-30 14:30:00这样的日期字符串。 然而,为了达到题目中的需求,我们需要更进一步,创建一个自定义的日期...
使用`MID`函数可以从字符串中提取特定位置的字符。对于15位身份证,出生年份需要在前面加上“19”,公式如下: ```excel =IF(LEN(A1)=15, "19" & MID(A1, 7, 2) & "-" & MID(A1, 9, 2) & "-" & MID(A1, 11, 2), ...
例如,在Python中,可以使用`datetime`模块的`strptime`函数来尝试解析给定的字符串,如果格式不正确,会抛出`ValueError`异常。Java中,`java.time`包下的`DateTimeFormatter`类提供了类似的功能。对于更复杂的验证...
在.NET中,我们可以使用`DateTime.ToString()`方法结合不同的格式字符串来定制日期的显示格式,如`"f"`表示完整日期和时间,包括秒,而`"y"`则表示年份的两位数表示。在SQL Server中,虽然没有直接的`ToString`方法...
一旦找到匹配项,就使用`.group(1)`方法来提取匹配的日期字符串。 为了进一步提取和验证日期的有效性,文章中还提供了`extractDate`函数,该函数能够处理文本,并提取出有效格式的日期。该函数首先使用`subChar`...
#### 3.1 将日期时间各部分转换为字符串 为了将日期时间各部分与随机数进行组合,我们需要先将这些整数转换为字符串形式。 示例代码: ```csharp string yearStr = year.ToString(); string monthStr = month....
提取标题通常涉及到识别文本中的关键段落或者特定格式的字符串。例如,网页标题常常位于HTML的`<title>`标签内,而文章标题可能以大写字母开头或包含特定的分隔符。使用正则表达式,我们可以设计模式来匹配这些特征...