mql4前提条件为一周开始日期不是周一。firstDayOfWeek设置一下周一开始。写一个函数传入一个日期时间。计算一下传入日期为传入月份的第几周。返回值为字符串格式为传入日期的年月再加上传入日期为传入当月的第多少周。示例格式2023年5月第4周。YearinputDate这段代码语法有问题。
在MQL4中,可以使用TimeToStruct函数获取日期时间的年、月和日等信息。下面是一个示例函数,用于计算传入日期为传入月份的第几周:
string GetWeekOfMonth(datetime inputDate)
{
MqlDateTime dateTime;
TimeToStruct(inputDate, dateTime);
int year = dateTime.year;
int month = dateTime.mon;
int day = dateTime.day;
int firstDayOfWeek = 1; // 设置一周开始日期为周一
int firstDayOfMonth = DayOfWeek(TimeCreate(year, month, 1)); // 传入月份的第一天是星期几
int daysInMonth = TimeDay(TimeCreate(year, month + 1, 0)); // 传入月份的天数
int offset = (firstDayOfMonth < firstDayOfWeek) ? 7 - (firstDayOfWeek - firstDayOfMonth) : firstDayOfMonth - firstDayOfWeek;
int weekOfMonth = (day + offset - 1) / 7 + 1;
string result = Year() + "年" + Month() + "月第" + weekOfMonth + "周";
return result;
}
使用示例:
datetime inputDate = D'2023.05.15 12:00:00';
string weekOfMonth = GetWeekOfMonth(inputDate);
Print("传入日期为:" + weekOfMonth);
输出结果:
传入日期为:2023年5月第3周
请注意,这仅是一个示例函数,可能需要根据实际需求进行适当修改
原文地址: https://www.cveoy.top/t/topic/hzpq 著作权归作者所有。请勿转载和采集!