Configuração de entrada de data/hora para diferentes tipos de item de ação

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 3 min. de leitura
  • Depois de criar uma tela de formulário de entrada e definir seu atributo IncludeTimezone para entradas de data/hora, você deve associar a tela do formulário de entrada a um item de ação. A forma como você configura as entradas de data/hora depende do tipo de item de ação que você usa.

    Tipo de item de ação Configurar
    Novo ou Atualização Certifique-se de que as entradas de data/hora sejam mapeadas para campos de data/hora na instância de back-end. A instância de back-end usa as informações de Fuso horário do dispositivo enviadas pela tela do formulário de entrada. Em seguida, a instância de back-end converte o valor de data/hora em Tempo universal coordenado (UTC/GMT) antes de salvá-lo no banco de dados.
    Script Você deve converter o valor de entrada de data/hora em UTC/GMT. Consulte os exemplos de script a seguir para obter mais informações. Para obter mais informações sobre scripts em geral para ServiceNow, consulte Script
    Nota:
    Personalizações podem ser necessárias dependendo do caso de uso envolvido.

    Exemplo de script GlideDateTime

    O exemplo a seguir define campos do GlideDateTime tipo.

    /sys_sg_write_back_action_step.do?sys_id=b390e6a7c1120110fa9b5abd6a7dbb64
    (function WriteBackAction(parm_input, parm_variable, actionResult) {
    	var shortDescription = parm_input.shortdescription;
    	var scheduledStart = parm_input.expectedstart;
    	var estimatedEnd = parm_input.estimatedend;
    	var description = parm_input.description;
    	var wotSysId = parm_variable['sys_id'];
    	
    	var wotGr = new GlideRecord("wm_task");
    	wotGr.get(wotSysId);
    	wotGr.setValue("description", description);
    	wotGr.setValue("short_description", shortDescription);
    	
    	var newEnd = new GlideDateTime(estimatedEnd);
    	var endMS = newEnd.getNumericValue();
    	
    	var newStart = new GlideDateTime(scheduledStart);
    	var startMS = newStart.getNumericValue();
    	
    	if (endMS - startMS < 0) {
    		gs.addErrorMessage(gs.getMessage("The start date should come before the end date"));
    	} else {
    		//set the time on screen all the time
    		wotGr.setValue("expected_start", newStart);
    		wotGr.setValue("estimated_end", newEnd);
    		var duration = endMS - startMS;
    		var newDur = new GlideDuration();
    		newDur.setValue(duration);
    		wotGr.setValue("estimated_work_duration", newDur);
    		
    		//check double booking no matter which field is changed. set needs_attention so that dispatcher can review it.
    		var info = new global.FSMAgentInfo(gs.getUserID());
    		var doubleBooking = info.allowAgentDoubleBookingTask();
    		if (doubleBooking){
    			var conflict = !(new global.SMDDateValidation().checkSchedulingConflictSimple(wotGr));
    			if (conflict) {
    				//BR Date Checks will display conflict message as Warning: {0} has been scheduled for a time the assigned
    				//only when time change.
    				wot.Gr.setValue("needs_attention", true);
    			}
    		}
    • Neste exemplo, expected_start e. estimated_end os campos são editados com base nos valores de suas entradas de data/hora correspondentes de esperadoinício e. estimatoend .
    • Porque o atributo IncludeTimezone está definido como verdadeiro . parm_input.expectedstart A variável retorna uma cadeia de caracteres de data/hora no formato AAAA-MM-DDThh:mm:ss.sssTZD. Para permitir que o sistema manipule este formato de data/hora, inicialize um objeto GlideDateTime passando a cadeia de caracteres para o construtor.
    • Porque expected_start e. estimated_end São colunas de data e hora no banco de dados, você pode chamar diretamente GlideRecord.setValue() e passar o. GlideDateTime objeto como o valor.

    Exemplo de script GlideScheduleDateTime

    O exemplo a seguir define campos do GlideScheduleDateTime tipo.

    /sys_sg_write_back_action_item.do?sys_id=539b20d6b72120107be0e34e9e11a971
    (function WriteBackAction(parm_input,parm_variable,actionResult) {
    
    	var personalSchedule = new global.FSMMobileUtil().getUserSchedule(parm_variable.user);
    	if (gs.nil(personalSchedule)) {
    		gs.error("create_event: personal schedule id is not found.");
    		gs.addErrorMessage(gs.getMessage("Create Event Failed"));
    		return;
    	}
    	
    	if(gs.nil(parm_input.type))
    		parm_input.type = "";
    	
    	var scheduleEntryGR = new GlideRecord("cmn_schedule_span");
    	scheduleEntryGR.initialize();
    	scheduleEntryGR.setValue("name", parm_input.name);
    	
    	var start_time = new GlideDateTime(parm_input.start_time);
    	scheduleEntryGR.start_date_time = start_time.getDisplayValueInternal();
    	
    	var end_time = new GlideDateTime(parm_input.end_time);
    	scheduleEntryGR.end_date_time = end_time.getDisplayValueInternal();
    	
    	scheduleEntryGR.setValue("show_as", parm_input.show_as);
    	scheduleEntryGR.setValue("type", parm_input.type);
    	scheduleEntryGR.setValue("user", parm_variable.user);
    	scheduleEntryGR.setValue("schedule", personalSchedule);
    	scheduleEntryGR.setValue("repeat_type", parm_input.repeats);
    	if(parm_input.repeats!=""){
    		scheduleEntryGR.setValue("repeat_count", parm_input.repeat_every);
    		scheduleEntryGR.repeat_until = parm_input.repeat_until;
    	}
    	scheduleEntryGR.insert();
    	
    	
    })(parm_input,parm_variable,actionResult);
    • Neste exemplo, start_date_time e. end_date_time os campos de uma entrada de programação são definidos com base nos valores de suas entradas de data/hora correspondentes de start_time e. end_time .
    • . IncludeTimezoneo atributo está definido como verdadeiro . parm_input.start_time A variável retorna uma cadeia de caracteres de data/hora no formato AAAA-MM-DDThh:mm:ss.sssTZD. Para permitir que o sistema manipule este formato de data/hora, inicialize um GlideDateTime passando a cadeia de caracteres para o construtor.
    • Porque start_date_time e. end_date_time Não são colunas de data e hora no banco de dados (em vez disso, são colunas de data/hora de programação), seus valores são definidos com gr.start_date_time_time_value .
      Nota:
      . date_time_value Espera-se que esteja no Fuso horário do perfil do usuário (o valor fornecido deve ser Valor de exibição de um GlideDateTime ). Esta configuração torna possível chamar o. GlideDateTime.getDisplayValueInternal() Método, que retorna uma cadeia de caracteres de data/hora no formato interno de AAAA-MM-DD hh:mm:ss e no Fuso horário do perfil do usuário.