2
 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)中做同样的事情它显示语法错误。我只是想得到星期没有。从提供的日期开始。任何见解将不胜感激。

PS 我找到了另一种解决方案,即我在 VS .net 中创建了一个 dll 文件并将其添加到 AX 的参考节点(AOT)。它缩短了 AX 中的代码 static void Job5(Args _args) { weekofyear.wof asd; ; asd = new weekofyear.Wof(); print asd.weekofyr(today()); pause; }

4

3 回答 3

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));
于 2011-03-29T10:45:02.203 回答
2

[任何未来读者的注意事项:以下描述了 Indranil 发布的原始代码中的错误;它不适用于当前问题中的代码,因为 Indranil 修复了此错误。另一个错误是在其他人的另一个答案中处理的:-)。]

您不应该将字符串作为第一个参数传递给GetWeekOfYear; 它想要一个System.DateTime(http://msdn.microsoft.com/en-us/library/system.globalization.calendar.getweekofyear.aspx)。(至少,在普通的 .NET 中确实如此;我不知道 Dynamics AX 是否还有其他神奇的功能。我怀疑它确实如此。)

(但如果并且当您确实想要字符串形式的日期时,那些反斜杠\应该是正斜杠/。)

于 2011-03-29T09:27:04.317 回答
1

如果您希望此代码支持字宽位置,请确保加载正确的 CultureInfo。加载当前 CultureInfo 将加载服务器首选区域性。如果用户是 en-gb 而服务器是 en-us,则您的第一天将不正确。

要加载特定的文化信息,您可以简单地执行以下操作:

System.Globalization.CultureInfo arCul = new System.Globalization.CultureInfo("en-US");

在选择作为答案的示例中,代码加载了cultureinfo,但没有将cultureinfo 用作GetWeekOfYear 方法的参数,这实际上没有任何意义。相反,您可以从cultureinfo 发送设置。

于 2011-03-29T12:56:29.113 回答