static void Job5(Args _args)
{
int i;
System.DateTime netDttm;
System.Int32 intnet;
;
netDttm = new System.DateTime(2011,03,20 ,13,44,55);
intnet = System.Globalization.CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(netDttm, Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday);
i = intnet;
info(int2str(i));
}
我在vb.net中尝试过它工作正常但在x ++中使用相同(使用.net lib)它显示语法错误。我正在尝试的是让周没有。从提供的日期。任何见解都将不胜感激。
P.S。我找到了另一种解决方案,即我在VS .net中创建了一个dll文件,并将其添加到AX的Reference节点(AOT)。它缩短了AX中的代码
static void Job5(Args _args)
{
weekofyear.wof asd;
;
asd = new weekofyear.Wof();
print asd.weekofyr(today());
pause;
}
答案 0 :(得分:4)
试试这个
int i;
System.DateTime netDttm;
System.Int32 intnet;
System.Globalization.CultureInfo cultureInfo;
System.Globalization.Calendar calendar;
System.Globalization.CalendarWeekRule calWeekRule
;
netDttm = new System.DateTime(2011,03,20 ,13,44,55);
cultureInfo = System.Globalization.CultureInfo::get_CurrentCulture();
calendar = cultureInfo.get_Calendar();
intnet = calendar.GetWeekOfYear(netDttm, System.Globalization.CalendarWeekRule::FirstFourDayWeek, System.DayOfWeek::Sunday);
i = intnet;
info(int2str(i));
答案 1 :(得分:2)
[未来读者的注意事项:以下描述了原始代码Indranil发布的错误;它不适用于当前问题中的代码,因为Indranil修复了这个错误。 其他错误在其他人的回答中处理: - )。]
您不应该将字符串作为第一个参数传递给GetWeekOfYear
;它想要一个System.DateTime
(http://msdn.microsoft.com/en-us/library/system.globalization.calendar.getweekofyear.aspx)。 (至少,在普通的.NET中是这样的;我不知道Dynamics AX是否会做其他一些神奇的事情。我对此表示怀疑。)
(但是如果你想要一个字符串形式的日期,那些反斜杠\
应该是正斜杠/
。)
答案 2 :(得分:1)
如果您希望此代码支持字宽的位置,请确保加载正确的CultureInfo。加载当前的CultureInfo将加载服务器首选文化。如果用户是en-gb且服务器是en-us,那么您的第一天就会出错。
要加载特定的cultureinfo,您只需执行以下操作:
System.Globalization.CultureInfo arCul = new System.Globalization.CultureInfo("en-US");
在选择作为答案的示例中,代码加载了cultureinfo,但cultureinfo不用作GetWeekOfYear方法的参数,这实际上没有任何意义。相反,您可以从cultureinfo发送设置。