我尝试编写Vista / W7小工具。在我的实验中,我想写一些系统上某些文件的修改日期。问题是如果我想使用字符串操作函数,小工具就会停止写输出。小工具代码的一部分如下所示:
function format_lmd(lmd)
{
// Parse something like "Sun Aug 26 17:13:22 UTC+0200"
var lmdFields = lmd.split(' ');
//weekday = lmdFields[0];
//month = lmdFields[1];
//monthday = lmdFields[2];
//moment = lmdFields[3];
//return monthday+' '+month+' '+moment;
return lmd;
}
function paintGadget()
{
var fileitem = System.Shell.itemFromPath("c:\\myfile.txt");
//canvas.addTextObject(' '+fileitem.modifyDate, 'Segoe UI', 9, 'white', text_offset, 21);
var result = null;
result = ' ';
result += format_lmd(fileitem.modifyDate);
canvas.addTextObject(result, 'Segoe UI', 9, 'white', text_offset, 21);
}
对split的调用(在函数format_lmd中)似乎停止了脚本(或更好:抛出异常)。虽然文档似乎表明split函数可用于在多个部分中拆分字符串,但在我的情况下它不起作用。
问题:
谢谢, 帕特里克
编辑:我发现了如何为Javascript启用调试器(请参阅http://msdn.microsoft.com/en-us/library/bb456467%28v=VS.85%29.aspx#_sidebar_overview_debugging_basic)。现在会弹出一个调试窗口并显示“Object expected”,但这对我没有帮助。
答案 0 :(得分:1)
这是Windows桌面小工具API和 System.Shell 命名空间的主要问题之一。某些命令返回JScript本身未处理的类型。幸运的是,这不是其中之一,但问题类似。我会得到答案,但首先,有点边注边撒谎。
您注意到在功能中检查typeof lmd
时,结果是“日期”。有点奇怪的是,没有本机日期类型JScript / ECMAScript - typeof new Date()
将导致“对象”。原因是许多System.Shell。*方法被映射到.net等效方法,结果只返回到JScript,而没有将数据转换为JScript本机类型。 Microsoft的一个非常短视的实现。
将 lmd 输出到调试器时,您会看到字符串结果,如:
Wed Nov 25 11:06:30 UTC 2009
这是因为需要字符串的函数会将非字符串参数转换为字符串。 System.Debug.outputString()在这里也不例外。实现这一点,解决方案变得清晰 - 强制从“日期”到字符串的类型转换:
var lmdFields = String(lmd.split(' '));
// or
var lmdFields = (lmd+"").split(' ');
//-> ["Wed","Nov","25","11:06:30","UTC","2009"]
如果您想将日期转换为JavaScript Date 对象,您只需将其传递给 Date()构造函数:
var lmdFields = new Date(lmd);
System.Debug.outputString(lmdFields.toLocaleString());
//-> "25 November 2009 11:06:30"
答案 1 :(得分:0)
如果它是一个日期,那么这可能会有所帮助(未经测试,但需要指导)...
function format_lmd(lmd)
{
month = lmd.getMonth()+1; // returns numeric value
monthday = lmd.getDay(); // 0 for Sunday, 1 for Monday, 2 for Tuesday, and so on
// not sure what you mean for 'moment'?
return monthday+' '+month+' '+moment;
}
您可以在数组中提供月份和日期值,如果需要,只需查看它们。
参考: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date#Methods