将日期函数从C++重写为C#
Rewrite date function from C++ to C#
我有一个类似的C++函数
string LocalDate()
{
time_t current = time(NULL);
struct tm *local_time = localtime(¤t);
char TIME[0xFF] ;
sprintf(TIME, "%02d%02d%02d%02d%02d%02d", local_time->tm_year % 100, local_time->tm_mon + 1,
local_time->tm_mday, local_time->tm_hour, local_time->tm_min, local_time->tm_sec);
return string(TIME);
}
我像这个一样重写成C#
public static string LocalDate()
{
DateTime value = DateTime.Now;
return String.Format("{0}{1}{2}{3}{4}{5}", value.Year.ToString("00"),
value.Month.ToString("00"), value.Day.ToString("00"),
value.Hour.ToString("00"), value.Minute.ToString("00"), value.Second.ToString("00"));
}
唯一不同的是C#返回20151029155030
。而C++返回CCD_ 2(C++中的年份部分实际值为115——我的意思是结构)
您可以看到C++省略了年份的20部分。我的第一个问题是,C++部分对你来说不是很奇怪吗?它将如何正确计算2212年的年份?(它不是和2112一样吗?等等)
如何使C#输出相同的值做%100?
您可以使用自定义日期时间格式而不是
return DateTime.Now.ToString("yyMMddHHmmss");
实现的问题在于value.Year.ToString("00")
没有将字符串限制为两位数。这只会确保string
将至少有2个数字,并且如果数字较少,则用零填充左焊盘。要复制C++,您可以改为使用value.Year % 100
。
(C++中的年份部分实际值为115——我指的是结构)
您可以看到C++省略了年份的20部分。我的第一个问题是,C++部分对你来说不是很奇怪吗?它将如何正确计算2212年的年份?(它不是和2112一样吗?等
DateTime具有自0以来的年份值。https://msdn.microsoft.com/en-us/library/system.datetime.year%28v=vs.110%29.aspx
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 在 C++ 中用派生类型重写成员函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 方法重写线程C++中的概念
- 为重写std::exception的库生成swig接口时出错
- 如何强制从重写方法调用重写的方法基方法?
- 用于C++的静态二进制检测或二进制重写工具和框架
- 如何将 if else 语句重写为 switch 语句
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 用 C 重写C++类
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 重写虚拟函数和继承
- C++调用使用重写函数的父类函数
- 重写打印函数而不是覆盖基类
- 不允许在类定义之外重写
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- C++:从抽象类重写纯虚拟运算符重载
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 重写函数不打印基类数据