计算日期的天名称

时间:2019-03-07 11:21:01

标签: javascript java

您好,我是Java的新手,我正在尝试为计算出的日期使用“日期名称”。 我正在使用Esko自动化引擎来运行Java

如果我根据实际日期创建JavaScript脚本,则可以使用以下函数来得出结果:

function f () {
    var date = new Date().toString().split(' ')[0];
    return date;
}

f ();

但是,当我尝试用另一个计算出的日期替换新的Date()时,它将失败。 计算出的日期显示如下:19/05/02 10:00 am,并从xml文件中删除。 这被命名为ScotlandDeliveryDate

function f () {
    var date = ScotlandDeliveryDate ().toString().split(' ')[0];
    return date;
}

f ();

结果:

javax.script.ScriptException: <eval>:4:25 Missing space after numeric literal
var date = 05/02/19 10:00am().toString().split(' ')[0];
^ in <eval> at line number 4 at column number 25

请问有人有什么想法。

1 个答案:

答案 0 :(得分:0)

我对“ Esko”一无所知。但是在上面给出的示例中,您尝试在另一个SmartName的定义中使用一个SmartName(ScotlandDeliveryDate)。在下面的链接中,它们似乎表明这是通过将SmartName括在方括号中来完成的。

https://docs.esko.com/docs/en-us/automationengine/18/userguide/home.html#en-us/common/ae/concept/co_ae_SN_Script_Exa.html

所以我认为您的代码需要看起来像这样:

function f () {
   return '[ScotlandDeliveryDate]'.split(' ')[0];
}
f ();

但是,从您的错误消息中,看来[ScotlandDeliveryDate]将返回05/02/19 10:00am;如果是这种情况,那么将这个值分割成空格然后再获取第一个值仍然不会为您提供日期名称。

要做到这一点,您将需要以下内容:

function f () {
   var monthDayYear = '[ScotlandDeliveryDate]'.split(' ')[0];
   var dateTimeStamp = Date.parse(monthDayYear);
   var dateObject = new Date(dateTimeStamp);
   return new Intl.DateTimeFormat('en-US', {weekday:'long'}).format(dateObject);
}
f ();

或者,没有Intl对象:

function f () {
   var dayNames = [
      'Sunday',
      'Monday',
      'Tuesday',
      'Wednesday',
      'Thursday',
      'Friday',
      'Saturday'
   ];
   var monthDayYear = '[ScotlandDeliveryDate]'.split(' ')[0];
   var dateTimeStamp = Date.parse(monthDayYear);
   var dateObject = new Date(dateTimeStamp);
   var dayNumber = dateObject.getDay();
   return dayNames[dayNumber];
}
f ();