簡體   English   中英

日計算日期的名稱

[英]Day Name for a calculated date

嗨我是Java的新手,我正在嘗試為計算日期鍛煉日名。 我使用Esko Automation Engine來運行我的Java

如果我根據實際日期創建一個JavaScript腳本,則使用以下函數:

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

f ();

但是當我嘗試用另一個計算日期替換新的Date()時,它失敗了。 計算出的日期顯示如下:05/02/19 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

有沒有人有任何想法。

我對“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 ();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM