Как изменить часовой пояс в Мирте? - PullRequest
0 голосов
/ 16 сентября 2011

Я новичок в мире веселья, пытающийся сменить часовой пояс на исходящие сообщения. Mirth в настоящее время отмечает текущее время в сообщениях - только в среднем времени по Гринвичу. Я хочу пометить сообщения с центральным временем США.

Вот код трансформатора, который добавляется в даты: var dateString = DateUtil.getCurrentDate ("yyyyMMddHHmmss"); tmp ['MSH'] ['MSH.7'] ['MSH.7.1'] = dateString;

У меня есть несколько вопросов о том, как решить эту проблему:

  1. Есть ли способ изменить часовой пояс изнутри веселья?
  2. Если нет, есть ли способ изменить часовой пояс по умолчанию в Java?

В худшем случае, я могу настроить дату в javascript - но тогда мне придется решать эту проблему каждый раз, когда я хочу добавить текущее время к сообщению.

Ответы [ 4 ]

0 голосов
/ 24 марта 2017

Вы можете отредактировать соответствующий файл * .vmoptions, включив в него

-Duser.timezone=America/Chicago

Для моей системы мы используем mcservice.vmoptions для этого. Чтобы увидеть ваш выбор часового пояса Java, вы можете запросить java

java.util.TimeZone#getAvailableIDs() 

или вы можете посмотреть здесь: https://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/

В зависимости от того, где вы находитесь, вам, возможно, придется избегать использования CST или CDT, поскольку они являются абсолютными, которые не будут гибко преобразовываться при переходе на летнее время и обратно, как в Америке / Чикаго.

http://www.mirthproject.org/community/forums/showthread.php?t=4949

0 голосов
/ 07 марта 2012

Вы можете получить доступ к базовым классам Java, поэтому нет необходимости заново изобретать колесо для преобразования часовых поясов ...

function getCurrentLocalTimestamp() {
   var formatter = new Packages.java.text.SimpleDateFormat("yyyyMMddhhmmss"); 
   // your local TZ
   formatter.setTimeZone(Packages.java.util.TimeZone.getTimeZone("EST")); 
   return formatter.format(new Packages.java.util.Date()); 
}

tmp['MSH']['MSH.7']['MSH.7.1'] = getCurrentLocalTimestamp();
0 голосов
/ 07 марта 2012

Mirth работает под Java, который, в свою очередь, получает свой часовой пояс от системы, на которой он работает. Таким образом, вы можете изменить часовой пояс, обновив часовой пояс на сервере, на котором он работает.

Если это не вариант, то dividius предоставил хорошие инструкции по изменению вашего часового пояса с помощью классов Java.

0 голосов
/ 17 сентября 2011

Это отформатирует дату в JavaScript.Это не очень эффективно, но логику форматера можно поместить в более общее место для общего доступа.

Исходный код для форматирования даты пришел отсюда: http://jacwright.com/projects/javascript/date_format/

// Simulates PHP's date function
Date.prototype.format = function(format) {
    var returnStr = '';
    var replace = Date.replaceChars;
    for (var i = 0; i < format.length; i++) {       var curChar = format.charAt(i);         if (i - 1 >= 0 && format.charAt(i - 1) == "\\") {
            returnStr += curChar;
        }
        else if (replace[curChar]) {
            returnStr += replace[curChar].call(this);
        } else if (curChar != "\\"){
            returnStr += curChar;
        }
    }
    return returnStr;
};

Date.replaceChars = {
    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    longMonths: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    longDays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],

    // Day
    d: function() { return (this.getDate() < 10 ? '0' : '') + this.getDate(); },
    D: function() { return Date.replaceChars.shortDays[this.getDay()]; },
    j: function() { return this.getDate(); },
    l: function() { return Date.replaceChars.longDays[this.getDay()]; },
    N: function() { return this.getDay() + 1; },
    S: function() { return (this.getDate() % 10 == 1 && this.getDate() != 11 ? 'st' : (this.getDate() % 10 == 2 && this.getDate() != 12 ? 'nd' : (this.getDate() % 10 == 3 && this.getDate() != 13 ? 'rd' : 'th'))); },
    w: function() { return this.getDay(); },
    z: function() { var d = new Date(this.getFullYear(),0,1); return Math.ceil((this - d) / 86400000); }, // Fixed now
    // Week
    W: function() { var d = new Date(this.getFullYear(), 0, 1); return Math.ceil((((this - d) / 86400000) + d.getDay() + 1) / 7); }, // Fixed now
    // Month
    F: function() { return Date.replaceChars.longMonths[this.getMonth()]; },
    m: function() { return (this.getMonth() < 9 ? '0' : '') + (this.getMonth() + 1); },
    M: function() { return Date.replaceChars.shortMonths[this.getMonth()]; },
    n: function() { return this.getMonth() + 1; },
    t: function() { var d = new Date(); return new Date(d.getFullYear(), d.getMonth(), 0).getDate() }, // Fixed now, gets #days of date
    // Year
    L: function() { var year = this.getFullYear(); return (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)); },   // Fixed now
    o: function() { var d  = new Date(this.valueOf());  d.setDate(d.getDate() - ((this.getDay() + 6) % 7) + 3); return d.getFullYear();}, //Fixed now
    Y: function() { return this.getFullYear(); },
    y: function() { return ('' + this.getFullYear()).substr(2); },
    // Time
    a: function() { return this.getHours() < 12 ? 'am' : 'pm'; },
    A: function() { return this.getHours() < 12 ? 'AM' : 'PM'; },
    B: function() { return Math.floor((((this.getUTCHours() + 1) % 24) + this.getUTCMinutes() / 60 + this.getUTCSeconds() / 3600) * 1000 / 24); }, // Fixed now
    g: function() { return this.getHours() % 12 || 12; },
    G: function() { return this.getHours(); },
    h: function() { return ((this.getHours() % 12 || 12) < 10 ? '0' : '') + (this.getHours() % 12 || 12); },
    H: function() { return (this.getHours() < 10 ? '0' : '') + this.getHours(); },
    i: function() { return (this.getMinutes() < 10 ? '0' : '') + this.getMinutes(); },
    s: function() { return (this.getSeconds() < 10 ? '0' : '') + this.getSeconds(); },
    u: function() { var m = this.getMilliseconds(); return (m < 10 ? '00' : (m < 100 ?
'0' : '')) + m; },
    // Timezone
    e: function() { return "Not Yet Supported"; },
    I: function() { return "Not Yet Supported"; },
    O: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + '00'; },
    P: function() { return (-this.getTimezoneOffset() < 0 ? '-' : '+') + (Math.abs(this.getTimezoneOffset() / 60) < 10 ? '0' : '') + (Math.abs(this.getTimezoneOffset() / 60)) + ':00'; }, // Fixed now
    T: function() { var m = this.getMonth(); this.setMonth(0); var result = this.toTimeString().replace(/^.+ \(?([^\)]+)\)?$/, '$1'); this.setMonth(m); return result;},
    Z: function() { return -this.getTimezoneOffset() * 60; },
    // Full Date/Time
    c: function() { return this.format("Y-m-d\\TH:i:sP"); }, // Fixed now
    r: function() { return this.toString(); },
    U: function() { return this.getTime() / 1000; }
};

var myDate = new Date();
tmp['MSH']['MSH.7']['MSH.7.1'] = myDate.format('YmdHis');
...