ApexのAddmonths(x)面白い現象

1 ApexCodeで、下記ソースを書きました
2 // 月頭のLocal日付を定義する(Asia/Japan)
3 Date startDt = Date.parse(‘2012/03’ + ‘/31’);
4 // 書式化するため、DateTime定義します(Local TimeZone)
5 DateTime formatter = DateTime.newInstance(startDt , Time.newInstance(0,0,0,0));
6 formatter = formatter.addMonths(6);
7 System.debug(formatter.format(‘yyyy/MM/dd));
予想は2012/09/30を表するべき、実際は 2012/10/01を表示されました
原因調べると、 5行目のformatter定義する場合、LocalTimeZoneで2012/03/31:00:00:00で変数定義します
6行目Apex計算する場合、先に formatter はGMT (2012/03/30:15:00:00)に変更して、+6ヶ月で計算しました
そすると、計算結果は GTMの 2012/09/30:15:00:00になりました、format関数で、Local変更すると、2012/10/01を表示しました
———————————————————————————–
一回対応しました
5行目定義する場合、DateTime formatter = DateTime.newInstance(startDt , Time.newInstance(0,0,0,0));
->
DateTime formatter = DateTime.newInstanceGMT(startDt , Time.newInstance(0,0,0,0));で定義する

PickList定義制限

Additional Limits for Custom Picklists
You can create custom picklists that have up to 1000 entries and 255 characters per entry.
Custom multi-select picklists can contain 150 values of 40 characters per value, and users can select up to 100 at a time on a record.

标准按钮的覆盖方法

如果想覆盖标准的button机能,只需要做一个VF,覆盖掉button调用就可以了
但是如果根据需要,例如: 客户A 需要看VF做的特殊画面
系统管理员看原来的标准画面
这种情况下,可以用下面的方法来解决
方法1:

<apex:page standardController="DistributorOrderItem__c"
extensions="DistributorOrderEditForCSR"
action="{!if($Profile.Name !='System Administrator',
urlFor($Action.DistributorOrderItem__c.Edit, DistributorOrderItem__c.id, null, true), null)}">

利用urlFor跳转,可以防止死循环的调用

方法2:

vfPageRecordType=('/' + CallActivity_ID+ '?nooverride=1' + '&retURL=' + retURL );

注意:nooverride=1 意思是调用原来的标准画面,不要覆盖的意思

参考’
http://developer.force.com/cookbook/recipe/overriding-a-page-for-some-but-not-all-users
http://boards.developerforce.com/t5/Visualforce-Development/Visualforce-page-edit-button-override-and-page-redirect-not/td-p/88160/page/2